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

Art*_*uro 2 python json mongodb pymongo

我想从Python查询MongoDB上的不同字段,就像在高级搜索中一样.

只用一个字段保持示例简单,如果我{'Title': /my string/}在Mongo上手动查询,我会得到预期的结果.

在Python上我正在做以下事情:

query = {}
args = request.form
for arg in args:
  key = "{0}".format(arg)
  if args[arg] != "":
    query[key] = "/" + args[arg].lower() + "/"
Run Code Online (Sandbox Code Playgroud)

但是,查询是这样的(注意引号):

{'Title': '/my string/'}
Run Code Online (Sandbox Code Playgroud)

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

ale*_*cxe 5

做一个列表:

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

然后,用$or或加入条件$and(取决于你想如何应用它们):

db.col.find({"$or": conditions})
Run Code Online (Sandbox Code Playgroud)