MongoDB中两个字段之间包含的搜索字符串



我期待着一个非常类似于这个问题中提出的解决方案:选择mongodb中两个字段的concat值匹配的记录

我有两个字段:firstNamelastName,我想搜索一个可以包含在这两个字段中的字符串。在那个问题中,我在找到这个之前链接了:

db.coll.find({$expr:{$eq:["MY QUERY STRING", {$concat:["$firstName", "$lastName"]}]}})

但是这个表达式检查是否完全匹配。我想要的东西像Sql:%like% instead of$eq '

如果我有这样一个记录:

{
"firstName": "Mario",
"lastName": "Roberto Rossi"
}

我想找到一个查询字符串:Mario Roberto。如何更改查询以解决此问题?

db.collection.aggregate([
{
$project: {
newField: {
$concat: [
"$firstName",
" ",
"$lastName"
]
}
}
},
{
$addFields: {
m: {
"$regexMatch": {
"input": "$newField",
"regex": "mario robert",
"options": "i"
}
}
}
},
{
"$match": {
m: true
}
}
])

游乐场

你可以简化它。您可以根据您的用例更改regex。

如果你正在寻找搜索功能,你可以检查地图搜索。

最新更新