如何在 MongoDB find() 中小写字段数据

Evg*_*eev 1 javascript mongoose mongodb express

在我的数据库集合中,我有两个对象。

[
  {"_id" : 1, name: "notLowercased"},
  {"_id" : 2, name: "lowercased"},
]
Run Code Online (Sandbox Code Playgroud)

我正在使用 find 和 $regex 来查找包含某些字符串的名称。

data = await CatalogModel.find({name: {$regex : searcher.toString().toLowerCase()}})
Run Code Online (Sandbox Code Playgroud)

例如我的输入字符串是“小写”。

结果我得到了一个数组

[
  {"_id" : 2, name: "lowercased"},
]
Run Code Online (Sandbox Code Playgroud)

但我想得到这样的结果:

[
  {"_id" : 1, name: "notLowercased"},
  {"_id" : 2, name: "lowercased"},
]
Run Code Online (Sandbox Code Playgroud)

我知道这是因为名称“notLowercased”不是小写而发生的。

如何在此请求中小写名称字段?

J.F*_*.F. 5

您可以$options像这样添加参数:$options: "i"

正如文档中所解释的:

i:不区分大小写以匹配大小写。有关示例,请参阅执行不区分大小写的正则表达式匹配。

即使你可以避免toLowerCase()

data = await CatalogModel.find({name: {$regex : searcher.toString(), "$options": "i" }})
Run Code Online (Sandbox Code Playgroud)

此处的示例和toLowerCase() 此处的示例