2014-10-28 2 views
0

, так что у меня немного проблемы с mongoDB с помощью pymongo и с использованием или условия. Посмотрел на все похожие должности, но по какой-то причине мой, похоже, не работает.Pymongo или состояние для фильтрации запросов

 goodShots = coll.find({"Tag" : "zombiegame", "Meta.levelState":"NORMAL_MODE", "$or":[ 
      {"Meta.zombiesInLOS":{'$gt':0}}, {"Meta.zombiesInSLOS":{'$gt':0}}, 
      {"Meta.helpersInLOS":{'$gt':0}}, {"Meta.helpersInSLOS":{'gt':0}} 
      ]}) 

     goodShot01 = coll.find({"Tag" : "zombiegame", "Meta.levelState" : "NORMAL_MODE", "Meta.zombiesInLOS" : {"$gt" : 0}}) 
     goodShot02 = coll.find({"Tag" : "zombiegame", "Meta.levelState" : "NORMAL_MODE", "Meta.zombiesInSLOS" : {"$gt" : 0}}) 
     goodShot03 = coll.find({"Tag" : "zombiegame", "Meta.levelState" : "NORMAL_MODE", "Meta.helpersInLOS" : {"$gt" : 0}}) 
     goodShot04 = coll.find({"Tag" : "zombiegame", "Meta.levelState" : "NORMAL_MODE", "Meta.helpersInSLOS" : {"$gt" : 0}}) 

Первый запрос «goodShots» должен технически возвращать запросы, которые имеют все другие условия в "goodShot01-04. Однако он возвращает 0. «goodShot01-04» возвращает число> 0.

ответ

0

Если вставить 4 документа, как

{ 
    "Tag" : "zombiegame", 
    "Meta" : { 
     "levelState" : "NORMAL_MODE", 
     "zombiesInLOS" : 1 
    } 
} 

варьируя последнее поле в Meta через 4 возможности, то я считаю, все четыре документа с goodShots запросом и каждый соответствующим документом для goodShot01 через goodShot04. Мне пришлось добавить отсутствующий $ в последнем пункте $or, чтобы найти 4 вместо 3 документов. Возможно, еще раз проверьте, что вы вставляете правильный запрос?

Смежные вопросы