Javascript 如何将$lookup的结果与子文档合并
考虑以下玩具示例: 收藏Javascript 如何将$lookup的结果与子文档合并,javascript,mongodb,mongodb-query,aggregation-framework,aggregate,Javascript,Mongodb,Mongodb Query,Aggregation Framework,Aggregate,考虑以下玩具示例: 收藏商店 { “产品”:[ {id:“abc”,价格:20.5}, {id:“abd”,价格:34.0} ] } 收藏产品 { _id:“abc”, 名称:“苹果” } 正在运行以下查询 db.shops.aggregate([ { $lookup:{ 来自:“产品”, localField:“products.id”, foreignField:“\u id”, as:“产品信息” } } ]) 返回 [{ “产品”:[ {id:“abc”,价格:20.5}, {id
商店
{
“产品”:[
{id:“abc”,价格:20.5},
{id:“abd”,价格:34.0}
]
}
收藏产品
{
_id:“abc”,
名称:“苹果”
}
正在运行以下查询
db.shops.aggregate([
{
$lookup:{
来自:“产品”,
localField:“products.id”,
foreignField:“\u id”,
as:“产品信息”
}
}
])
返回
[{
“产品”:[
{id:“abc”,价格:20.5},
{id:“abd”,价格:34.0}
],
“产品信息”:[
{{u id:“abc”,名字:“Apple”},
{u id:“abd”,名字:“Orange”}
]
}]
是否有办法“合并”产品
和产品信息
以获得以下信息
[{
“产品”:[
{id:“abc”,价格:20.5,名称:“苹果”},
{id:“abd”,价格:34.0,名称:“Orange”}
],
}]
谢谢你的帮助 您可以使用下面的聚合
db.shops.aggregate([
{ $unwind: "$products" },
{
$lookup: {
from: "products",
localField: "products.id",
foreignField: "_id",
as: "products.name"
}
},
{ $unwind: "$products.name" },
{ $addFields: { "products.name": "$products.name.name" }},
{ $group: {
_id: "$_id",
products: {
$push: "$products"
}
}}
])