我正在开发一款月鹅应用程序,并面临着搜索字符串中有单个val的数据的问题。
例如:
Data :[
{ "name": "Shubham"},
{"name":"Shubham Sharma"},
{"name":"Sharma"}
]
搜索"Shubham“的结果应该是
[
{ "name": "Shubham"}
]
使用这个查询我无法实现我的目标。
var regexp = new RegExp(`^${name.toLowerCase()}`);
let promise = await usersModel.find({ name: regexp }).limit(40)
.collation({ locale: "en", caseLevel: true })
.exec(async function (err, users) {
if (err) {
return users;
}})
throw err;
});
发布于 2022-12-01 06:33:49
通过在查询中使用$regex
,并为不区分大小写的匹配启用i
选项,您根本不需要转换输入字符串。
示例操场- https://mongoplayground.net/p/tHap2kGneOa
查询:
db.collection.find({
name: {
$regex: "^Shubham$", // ^ = Starts with. $ = Ends with
$options: "i" // i = case insensitive
}
})
它将匹配:
Shubham
shubham
但不是:
Sharma Shubham
Sharma
Shubham Sharma
基于评论的更新。
注意:在这个不区分大小写的绝对字符串匹配实例中,您还可以利用排序规则- MongoDB: Is it possible to make a case-insensitive query?。
https://stackoverflow.com/questions/74636948
复制相似问题