0

我有一个非常简单的查询,我使用官方 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 内存和几个处理器。

是否有任何我可以查看的诊断日志,或者我的查询可能有错误?

4

1 回答 1

0

使用 mongoDB inbuild profiler ,我认为它会帮助你在某个时候查询真正出错的地方http://docs.mongodb.org/manual/tutorial/manage-the-database-profiler/

于 2013-04-05T03:13:52.113 回答