没有正则表达式的 mongo 中不区分大小写的搜索?

aaa*_*dan 5 regex mongoose mongodb

“我怎样才能在 mongo 中进行不区分大小写的查找”这个问题似乎主要是按照“使用正则表达式”来回答的。如果您的搜索字符串事先已知 ( /foo/),或者已知不包含正则表达式运算符 ( ^.+*$/\-()[]...),则这很好。

就我而言,我想对电子邮件地址进行不区分大小写的搜索,该地址可以包含点和加号。“正则表达式转义”字符串当然是可能的,但即使有一个标准的“ Regex.escapeString”函数(实际上没有),对于这样一个简单的问题,它已经开始变得难以解释和维护。

有没有办法在不使用正则表达式的情况下在 mongo 中进行不区分大小写的匹配?

Nen*_*vic 2

您可以使用aggregate()to 来执行此操作,而不是find()使用$regex

db.collection.aggregate([
  {
    "$match": {
      "$expr": {
        "$eq": [
          { "$toLower": "$email" },
          { "$toLower": "EXAMPLE+@gmail.com" }
        ]
      }
    }
  }
])
Run Code Online (Sandbox Code Playgroud)

工作示例