gpt4 book ai didi

javascript - 在文档数组 Mongoose 中获取精确的子文档

转载 作者:搜寻专家 更新时间:2023-10-31 23:56:33 25 4
gpt4 key购买 nike

我正在使用 mongoose 开发一个 graphql API 来与我的 mongo 数据库交互,但我遇到了一些问题。我有带有子文档数组的文档,我需要获取所有包含具有特定字段值的子文档的文档。问题是我只想在文档中获取这个子文档。用一个例子更容易解释:

我的文档是这样的:

documents: [
{
id: 1,
items: [
{
value: 5,
},
{
value: 10,
},
]
},
{
id: 2,
items: [
{
value: 7,
},
{
value: 10,
},
]
}]

我想获取所有具有 value == 5 项目的文档,但仅包含此值,例如:

results : [
{
id: 1,
items: [
{
value: 5,
}
]
}]

我现在做的是:

documents.find({
items: {
$elemMatch : {
value: { $eq: 5 }
}
},
});

事情是这样做的,我得到了正确的文档,但它包含所有项目,而不仅仅是符合条件的项目。我在寻找解决方案,但没有找到任何解决方案。

感谢您的帮助,我希望它足够清楚。

最佳答案

您需要按如下方式使用聚合框架:

db.test.aggregate(
{ $match: { "id": 1 }},
{ $unwind: '$items' },
{ $match: { "items.value": 5 }},
{ $project: { "_id": 0 }}
)

返回值:

{ "id" : 1, "items" : { "value" : 5 } }

关于javascript - 在文档数组 Mongoose 中获取精确的子文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56210301/

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