我有一个在mongo客户端中运行但在使用pymongo时不返回任何内容的查询。
我试过了:
posts = collection.find({"species": argv[0]}), "evidence" : {"$in":["[true,true,true,null]","[true,null,true,null]"]}})
和
posts = collection.find({"species": argv[0]}), "evidence" : {"$in": [["true","true","true","null"],["true","null","true","null"]]}})
我已经将问题缩小到$ in语句中寻找不同的数组,因为如果我运行它就可以了:
posts = collection.find({"species": argv[0]})})
答案 0 :(得分:1)
看起来你刚刚混淆了括号和括号:
posts = collection.find({"species": argv[0],
"evidence" : {"$in": [["true","true","true","null"]
["true","null","true","null"]]}})
答案 1 :(得分:1)
感谢alecxe捕获语法错误。然而,问题的根源是由奇怪的行为引起的。在mongo数据库中,证据数组中的值为true,false或null(例如[true,false,null,null]。如果我这样搜索:
posts = collection.find({"species": argv[0], "evidence" : {"$in": [["true","true","true","null"],["true","null","true","null"]]}})
我没有结果。如果我搜索将数组值更改为python关键字,如下所示:
posts = collection.find({"species": argv[0], "evidence" : {"$in": [[True,None,None,None], [True,None,True,None]]}})
返回正确的结果。