【发布时间】:2020-03-14 06:07:57
【问题描述】:
这里是 MongoDB 新手。
我有一个如下所示的“客户”文档:
{
name: "myClient",
products: [{
name: "myProduct1",
environments: [{
name: "myEnvironment1",
changeLogs: [
{ "some": "fields21" },
{ "some": "fields22" }
]
},
{
name: "myEnvironment2",
changeLogs: [
{ "some": "fields11" },
{ "some": "fields12" }
]
}
]
},
{
name: "myProduct2",
environments: [{
name: "myEnv1",
changeLogs: [
{ "some": "fields1" },
{ "some": "fields2" }
]
},
{
name: "myEnv1",
changeLogs: [
{ "some": "fields3" },
{ "some": "fields4" }
]
}
]
}]
}
所以一个客户有很多products,它有很多environments,它有很多changeLogs。我希望返回给定环境的changeLogs 列表,只有environment._id 继续。
我可以使用这个_id 找到正确的client 文档:
db.clients.find({'products.environments._id': ObjectId("5a1bf4b410842200043d56ff")})
但这会返回整个client 文档。我想要的是从环境中返回 changeLogs 数组 _id: ObjectId("5a1bf4b410842200043d56ff")
假设我有第一个 environment 和第一个 product 的 _id,我想要的输出如下:
[
{ "some": "fields21" },
{ "some": "fields22" }
]
您建议我使用什么查询来实现此目的?
非常感谢您的帮助。到目前为止的文档只是令人困惑,但我相信我最终会到达那里!
【问题讨论】:
标签: mongodb mongoose nested-documents