我正在尝试查询下面的mongodb集合。
>>> db.ds.find({"from":{'$regex':'Pooja'}}).count()
18
但是当我使用自定义字符串追加这个相同的查询时,它会给我一个错误..
>>> a = 'Pooja'
>>> querystring = ''
>>> querystring = querystring+"'from':{'$regex':"+a+"}"
>>> querystring
"'from':{'$regex':Pooja}"
>>> db.ds.find({querystring}).count()
SyntaxError: invalid syntax
>>>
我确实需要明确查询字符串中的多个参数,所以我使用这种方式。 任何人都可以帮我这个吗?
答案 0 :(得分:1)
您的代码中存在严重错误。
首先:
db.ds.find({querystring}).count() # SyntaxError here
此行提供SyntaxError
的问题,因为{object}
语法是set
内置类型的文字,自Python 2.7.x版本开始提供,因此,您在此处# 39;重新尝试创建一个由一个字符串组成的集合:
{object} # creates set since Python 2.7
{object1: object2} # creates dict (object1 should be [hashable][1])
让我们看一下在Python 2.7中创建set的例子:
s = {1, 2, 3} # Creating set of three unique elements ({} - set literal)
d = {1: 'a', 2: 'b'} # Creating dict of number->letters ({:} - dict literal)
第二件事是MongoDB Python驱动程序(我假设您使用Pymongo)并不接受字符串作为查询。它拥有自己的API,所有查询都是通过表示JSON对象的dict
来完成的(注意,Mongo将所有对象存储在JSON的二进制表示中,称为BSON)。
所以在这里,请记住第一个问题,当您尝试创建set
而不是dict
时)。
结论: