簡體   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