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"
    }
  }}
])