2014-10-28 122 views
0

所以我遇到一些麻煩,通過與pymongo mongoDB和使用或條件。看着所有類似的帖子,但由於某種原因,我的似乎沒有工作。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 
    } 
} 

通過4種可能性在不同的Meta最後一個字段,然後我找到了goodShots查詢,並通過goodShot04goodShot01每個合適的文檔中的所有四個文件。我必須在$or的最後一個條款中添加缺少的$,以找到4而不是3個文檔。也許再次檢查你是在正確的查詢?