如何在c#中为MongoQuery计时
本文关键字:MongoQuery 计时 中为 | 更新日期: 2023-09-27 18:06:13
我尝试在c#中对索引为
的列计时Mongo查询:DateTime startTime = DateTime.Now;
MongoCollection<BsonDocument> voteCol = database.GetCollection<BsonDocument>("XXX");
var query = new QueryDocument("YYY", "23915");
MongoCursor<BsonDocument> cursor = voteCol.Find(query).SetSortOrder(SortBy.Descending("ZZZ")).SetLimit(10).SetSkip(20);
TimeSpan elapsedTime = DateTime.Now - startTime;
Console.WriteLine("Elapsed: {0}, in seconds: {1}, in milliseconds: {2} ",
elapsedTime, elapsedTime.TotalSeconds, elapsedTime.TotalMilliseconds, cursor.Count());
每次都等于0,然后得到结果。这意味着它太快了还是我错过了什么?
这是因为您实际上没有从mongodb加载数据。数据将在开始迭代MongoCursor
时加载。您可以很容易地使用ToList
方法从数据库加载数据:
var data = voteCol.Find(query)
.SetSortOrder(SortBy.Descending("ZZZ"))
.SetLimit(10)
.SetSkip(20)
.ToList();
我还建议使用秒表来评估经过的时间。
就像Andrew说的,直到你开始遍历游标,Mongo才真正执行查询,所以你的查询没有被执行。
Stopwatch
类可能是最好的方式来计时从您的应用程序的查询,但你也可以使用MongoDB数据库分析器基准你的查询在数据库
try Stopwatch