gpt4 book ai didi

MongoDB:搜索查询以返回数组内的对象

转载 作者:行者123 更新时间:2023-12-05 04:33:01 25 4
gpt4 key购买 nike

我有一个 Journal Schema,其中包含一组笔记。我想在我的应用程序中实现 MongoDB 搜索,以便它返回与查询匹配的注释。现在它返回包含匹配注释的整个 Journal 对象。

期刊架构:

{
userid: {
type: String,
required: true,
},
notes: [
{
content: {
type: String,
},
},
],
}

现在我的查询语法是:

[
{
$search: {
index: 'Journal-search-index',
text: {
query: 'asdf',
path: 'content'
}
}
}
]

它返回整个 Journal 对象,但我只想要与查询匹配的注释。有什么办法可以实现吗?

最佳答案

您当前正在搜索与当前查询匹配的文档,但未过滤文档内部的数据,特别是 notes 数组。

你必须在下一个聚合操作上添加过滤器

const query = "asdf";

db.collection.aggregate([
{
$search: {
index: "Journal-search-index",
text: {
query: query,
path: "content",
},
},
},
{
$project: {
notes: {
$filter: {
input: "$notes",
as: "note",
cond: {
$regexMatch: {
input: "$$note",
regex: query,
options: "i",
},
},
},
},
},
},
]);

Playground Example

关于MongoDB:搜索查询以返回数组内的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71507954/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com