2013-04-04 1 views
0

У меня очень простой запрос, который я выполняю против Mongo, используя официальный драйвер C# 1.8, который возвращается только после выполнения запроса примерно в 50% случаев. У меня есть единичный тест, и если я запустил запрос, он вернется примерно в 50% случаев менее чем за секунду, поскольку в других случаях он никогда не закончится.MongoDb Query не возвращается все время

Ниже приведен запрос

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 предметов и находится на сервере Mongo, работающем в Windows, с 4 гигабайтами памяти и несколькими процессорами.

Есть ли какие-либо диагностические журналы, на которые я могу посмотреть или, возможно, ошибки с моим запросом?

+0

, когда ваш запрос работает (и не заканчивать) запустить db.currentOp() в приглашении оболочки Монго , Это покажет вам все текущие процессы/запросы, и вы можете увидеть, действительно ли он запущен или нет. –

ответ