【问题标题】:Dynamically build query with regex in PyMongo在 PyMongo 中使用正则表达式动态构建查询
【发布时间】:2016-05-17 06:07:04
【问题描述】:

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

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

【问题讨论】:

    标签: python json mongodb pymongo


    【解决方案1】:

    列个清单:

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

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

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

    【讨论】:

      猜你喜欢
      • 2020-10-26
      • 1970-01-01
      • 2011-03-29
      • 2023-03-14
      • 1970-01-01
      • 2018-02-16
      • 1970-01-01
      • 2013-11-20
      相关资源
      最近更新 更多