【问题标题】:Pattern Regex in $in in MongoDBMongoDB 中 $in 中的模式正则表达式
【发布时间】:2017-04-10 07:27:55
【问题描述】:

我正在尝试在 MongoDB 的 $in 命令中使用正则表达式。但是,根据文档,它只允许模式正则表达式。

当我尝试将这样的模式与字符串列表一起使用时,它失败了

collection.find({"categories": { "$in": ["/^item1$/i","/^item2$/i","/^item3$/i"] } },{"_id":0}).count()

但是当我尝试这个时,它可以工作

collection.find({"categories": { "$in": [/^item1$/i,/^item2$/i,/^item3$/i] } }).count()

这是为什么?我正在使用 PyMongo,需要传递一个字符串列表。我该怎么做?

【问题讨论】:

    标签: regex mongodb mongodb-query pymongo


    【解决方案1】:

    使用 PyMongo,您将需要通过使用 re.compile() 编译每个对象的每个模式来创建正则表达式对象列表,如提到的 here. 但这将非常低效。

    相反,您应该使用字符类编写正则表达式。见demo

    import re
    
    pat = re.compile(r'^item[1-3]$')
    collection.find({'categories': pat})
    

    【讨论】:

      猜你喜欢
      • 2022-07-28
      • 2022-11-27
      • 2013-11-20
      • 1970-01-01
      • 2020-09-10
      • 1970-01-01
      • 1970-01-01
      • 2014-10-15
      相关资源
      最近更新 更多