Python Pymongo查询问题
我有一个在mongo客户机中工作的查询,但在使用pymongo时不返回任何内容 我试过:Python Pymongo查询问题,python,mongodb,Python,Mongodb,我有一个在mongo客户机中工作的查询,但在使用pymongo时不返回任何内容 我试过: posts = collection.find({"species": argv[0]}), "evidence" : {"$in":["[true,true,true,null]","[true,null,true,null]"]}}) 及 我已将问题缩小到寻找不同数组的$in语句,因为如果我运行此语句,它将起作用: posts = collection.find({"species": argv[0
posts = collection.find({"species": argv[0]}), "evidence" : {"$in":["[true,true,true,null]","[true,null,true,null]"]}})
及
我已将问题缩小到寻找不同数组的$in语句,因为如果我运行此语句,它将起作用:
posts = collection.find({"species": argv[0]})})
看起来你把括号和大括号弄混了:
posts = collection.find({"species": argv[0],
"evidence" : {"$in": [["true","true","true","null"]
["true","null","true","null"]]}})
感谢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"]]}})
posts = collection.find({"species": argv[0], "evidence" : {"$in": [[True,None,None,None], [True,None,True,None]]}})
我没有得到任何结果。如果我搜索将数组值更改为python关键字,如下所示:
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,None,None,None], [True,None,True,None]]}})
它返回正确的结果。这不是什么“奇怪的行为”-您让它搜索值为“true”和“null”的字符串,它们与布尔值true或null值不同。