【发布时间】:2020-11-21 12:09:10
【问题描述】:
我有一个数据,其中有一个数组。在那个数组下有许多对象数组。我提到原始数据,以便任何人猜测结构
{
_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 是真/假,因为我没有提到条件。
任何人都可以帮助我解决这个问题以通过条件获取数据。我只希望这个到 Mongodb 查询。
非常感谢任何帮助。
【问题讨论】:
-
您可以在正则表达式中使用前瞻断言。示例 - (world).*\s+(?=isDelete: false)。所以首先正则表达式寻找世界,当它找到它然后它开始寻找 isDelete: false 然后它只在条件满足时才返回匹配,否则它不会导致匹配
-
@rootkonda 感谢您的回复,我试过了,但不起作用
-
你能把你试过的贴在这里吗?
-
让 searchTerm =
${req.body.key}.*\s+(?=isDelete: false); db.collection.find( { 'content.str': { $regex:.*\\b${searchTerm}\\b.*, $options: 'i', } } )