我想从Python查询MongoDB上的不同字段,就像在高级搜索中一样。
只使用一个字段保持示例简单,如果我在Mongo上手动查询{'Title': /my string/}
,我会得到预期的结果。
在Python上我正在做以下事情:
query = {}
args = request.form
for arg in args:
key = "{0}".format(arg)
if args[arg] != "":
query[key] = "/" + args[arg].lower() + "/"
但是,查询是这样的(注意引号):
{'Title': '/my string/'}
所以我没有得到任何结果。如何实现正确的查询?
答案 0 :(得分:5)
列出清单:
conditions = [{field: {"$regex": value.lower()}} for field, value in args.items()]
然后,使用$or
或$and
加入条件(取决于您希望如何应用它们):
db.col.find({"$or": conditions})