繁体   English   中英

Mongo DB C#Driver 2.0同步计数

[英]Mongo DB C# Driver 2.0 Synchronous Count

我需要使用尚未切换为异步的旧控制器来计算与过滤器匹配的项目。 我们有一个关于如何执行此操作的异步答案

long result = await collection.CountAsync(Builders<Hamster>.Filter.Eq(_ => _.Name, "bar"));

我还在MongodDb网站上找到了一篇介绍2.0 .NET驱动程序的文章,该文章的评论似乎证实这是不可能的:

  1. 它只是异步:这是真的。 新API只有异步(例如微软的HttpClient)。 通常,异步编程很容易,并且无需大量线程即可实现更高的服务器吞吐量。 我们正在考虑是否也应该支持同步API,虽然我们已经得到了一些请求(包括你的),但一般用户似乎都渴望使用异步编程。

尽管如此,我想问一下是否有办法做到这一点/一个确认,如果不使控制器方法异步(及其所有助手),这是不可能的。

由于驱动程序的v2.2存在所有异步方法的同步重载,因此您应该使用它们而不是在异步API上阻塞。 这样做性能较差,可能会导致死锁:

long countOfItemsMatchingFilter = yourCollectionName.Count(yourFilterName);

嗯......这很容易 - 我忘了你可以只是用户。 .Result绕过整个“没有await同步方法”的事情:

long countOfItemsMatchingFilter = yourCollectionName.CountAsync(yourFilterName).Result;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM