在PyMongo中使用正则表达式动态构建查询

时间:2016-02-07 15:01:39

标签: python json mongodb pymongo

我想从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/'}

所以我没有得到任何结果。如何实现正确的查询?

1 个答案:

答案 0 :(得分:5)

列出清单:

conditions = [{field: {"$regex": value.lower()}} for field, value in args.items()]

然后,使用$or$and加入条件(取决于您希望如何应用它们):

db.col.find({"$or": conditions})