0
我有一个非常简单的查询,我正在使用官方C#驱动程序1.8针对Mongo运行,它只从执行查询大约50%的时间返回。我有一个单元测试,如果我运行查询,它将在不到一秒的时间内返回大约50%的时间,其他时间将不会完成。MongoDb查询不会返回所有的时间
下面是查询
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个内存和一个处理器。
是否有任何诊断日志可以查看,或者可能是我的查询错误?
当您查询正在运行(而不是结束)在蒙戈shell提示符下运行db.currentOp() 。这将向您显示所有当前进程/查询,并且您可以看到它是否实际上正在运行。 – 2013-04-05 16:02:43