我有一个非常简单的查询,我使用官方 C# 驱动程序 1.8 对 Mongo 运行,该查询仅在大约 50% 的时间内从执行查询中返回。我有一个单元测试,如果我运行查询,它将在不到一秒的时间内返回大约 50% 的时间,而其他时间它永远不会完成。
下面是查询
var q = Database.GetCollection<Stuff>("Stuff").AsQueryable()
.Where(x => x.Partition == partitionName && x.PersistantId != null && (
(x.When.DateStart > startingFrom && x.When.DateEnd == null) ||
(x.When.DateEnd > startingFrom)));
return q.ToList();
当我接受查询并使用下面的查询在 MongoVue 中运行它时,我可以在 1 秒内得到响应。
{ "Partition" : "PartitionID:53", "PersistantId" : { "$ne" : null }, "$or" : [{ "When.DateStart" : { "$gt" : ISODate("2012-04-01T06:00:00Z") }, "When.DateEnd" : null }, { "When.DateEnd" : { "$gt" : ISODate("2012-04-01T06:00:00Z") } }] }
这似乎是 1.8 驱动程序或 MongoDB 2.4.1 中的错误。该集合只有大约 70,000 个项目,并且位于运行在 Windows 上的 mongo 服务器上,具有 4 gigs 内存和几个处理器。
是否有任何我可以查看的诊断日志,或者我的查询可能有错误?