6

我在 MongoDB 中有一个带有正则表达式属性的文档

    {
        _id: ObjectId("516023189732da20ce000004"),
        regex: /^(my|your)\s+regex$/
    }

我需要用类似的东西来检索这个文档db.col.find({regex: 'your regex'})and db.col.find({regex: 'my regex'})。在 MySQL 中,我会这样做:SELECT * FROM table WHERE 'my regex' REGEXP table.regex. 如何在 MongoDB 中实现这一点?

4

2 回答 2

11

您可以按以下方式使用 $where 运算符:

db.col.find({$where: "\"my regex\".match(this.regex)"})
于 2013-04-13T15:36:32.560 回答
2

正如@fgalan在 2013 年提供的Jira 票证中所解释的那样,您可以使用您可以使用此查询:$expr

db.collection.find({
  "$expr": {
    "$regexMatch": {
      "input": "$key",
      "regex": "$regex",
      "options": "i"
    }
  }
})

这里的例子

有了$expr你可以避免$where哪些是无效的。

于 2021-11-15T19:07:37.603 回答