Pymongo查询问题

时间:2014-04-23 21:40:19

标签: python mongodb

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

2 个答案:

答案 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]]}})

返回正确的结果。