Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Pymongo查询问题_Python_Mongodb - Fatal编程技术网

Python 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

我有一个在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"]]}})

感谢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值不同。