数组下的Mongodb条件查询搜索



我有一个数组所在的数据。在那个数组下面有许多对象数组。我提到的是原始数据,这样任何人都可以猜测的结构

{
_id: ObjectId(dfs45sd54fgds4gsd54gs5),
content: [
{
str: "Hey",
isDelete: false 
},
{
str: "world",
isDelete: true
}
]
}

所以我想搜索任何匹配的字符串,并且在数组下进行顶部搜索。

所以我的查询是这样的:

let searchTerm = req.body.key;
db.collection.find(
{
'content.str': {
$regex: `.*\b${searchTerm}\b.*`,
$options: 'i',
}
}
)

因此,这将返回数据。现在由于某种原因,我必须搜索数据,如果isDelete: false

现在它返回isDelete是否为true/false的数据,因为我没有提到条件。

有人能帮我解决这个问题,通过条件获得数据吗。我只想把它传给Mongodb Query。

非常感谢您的帮助。

$elemMatch运算符将包含数组字段的文档与至少一个匹配所有指定查询条件的元素进行匹配

db.collection.find({
content: {
$elemMatch: {
isDelete: true,
str: {
$regex: `.*\b${searchTerm}\b.*`,
$options: "i"
}
}
}
},
{
"content.$": 1
})

工作游乐场:https://mongoplayground.net/p/VkdWMnYtGA3

您可以在下面的中添加另一个条件

db.test2.find({
$and: [
{
"content.str": {
$regex: "hey",
$options: "i",

}
},
{
"content.isDelete": false
}
]
},
{
'content.$':1 //Projection - to get only matching array element
})

最新更新