Pymongo或条件筛选查询

时间:2014-10-28 03:19:03

标签: python mongodb pymongo

所以我在使用pymongo和使用或条件时通过mongoDB遇到一些麻烦。看了所有类似的帖子,但由于某种原因,我似乎没有工作。

        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虽然。

1 个答案:

答案 0 :(得分:0)

如果我插入4个文件,如

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

通过4种可能性改变Meta中的最后一个字段,然后我找到包含goodShots查询的所有四个文档以及goodShot01goodShot04的每个相应文档。我必须在$or的最后一个句子中添加一个丢失的$来查找4个而不是3个文档。也许再次检查一下您是否正在进行正确的查询?