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
如果我插入4个文档,像这样:
{
"Tag" : "zombiegame",
"Meta" : {
"levelState" : "NORMAL_MODE",
"zombiesInLOS" : 1
}
}
我在Meta
的最后一个字段上尝试了4种不同的可能性,然后我用goodShots
这个查询找到了所有四个文档,并且每个文档都对应goodShot01
到goodShot04
。我发现我在$or
的最后一个条件里漏加了一个$符号,这样才找到了4个文档,而不是3个。也许你可以再检查一下,确保你输入的查询是正确的?