以下代碼需要5秒鐘才能完成40次迭代。我不認爲這與MongoDb有什麼關係,因爲過濾器應該立即構建,並且應該在這裏進行調用,而不是等待。請讓我知道,如果你看到任何將採取比每次迭代的第二這裏的第1000多種:C# - 運行40次Foreach迭代需要5秒
//There are 40 categories
foreach (var category in categories)
{
var filter = Builders<BsonDocument>.Filter.In("CurrentOfficeId", officesIds)
& Builders<BsonDocument>.Filter.Eq("CategoryId", category.Id);
if (userId > 0) filter &= Builders<BsonDocument>.Filter.Eq("SubmittedById", userId);
pendingCallsForItemCountPerCatArray[numberOfCatBeingIterated] = mongoItemsCollection
.Find(filter)
.CountAsync();
}
編輯:請注意,我試圖讓每一個呼叫以前調用完成之前。否則,代碼將如下所示:
callResult[numberOfCatBeingIterated] = await mongoItemsCollection
編輯2:我證實,呼叫產生Task<long>
,而不是長。我也證實,評論掉電話會將迭代次數降到0秒,這是我們知道的,但我只是確認。
你能不能告訴我們這個集合索引? – profesor79
等一下,我錯過了什麼嗎?我的理解是,在下次通話之前,我不會等待電話完成。只是打電話不應該花這麼長的時間...對吧?如果索引開始發揮作用,那麼代碼並沒有達到我想要的效果 - 我稍後等待調用結果,此時我會擔心索引和調用完成時間。 – VSO
休斯敦,我們有一個問題 - >它看起來像我們需要解決這個問題上蒙戈駕駛員側:( – profesor79