我有一个非常简单的查询,我使用官方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 GB,还有几个处理器。
我可以查看任何诊断日志或查询错误吗?
答案 0 :(得分:0)
使用mongoDB inbuild探查器,我认为它可以帮助您查询查询中出现什么问题http://docs.mongodb.org/manual/tutorial/manage-the-database-profiler/