我试图用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();

另外,我建议使用Stopwatch来评估经过的时间。

关于c# - 如何从C#计时MongoQuery,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7144789/

10-12 23:49