簡體   English   中英

如何將 $lookup 的結果與子文檔合並

[英]How to merge result from $lookup with subdocuments

考慮以下玩具示例:

收藏shops

{
  "products": [
    { id: "abc", price: 20.5 },
    { id: "abd", price: 34.0 }
  ]
}

收藏products

{
  _id: "abc",
  name: "Apple"
}

運行以下查詢...

db.shops.aggregate([
  {
    $lookup: {
      from: "products",
      localField: "products.id",
      foreignField: "_id",
      as: "product_info"
    }
  }
])

返回...

[{
  "products": [
    { id: "abc", price: 20.5 },
    { id: "abd", price: 34.0 }
  ],
  "product_info": [
    { _id: "abc", name: "Apple" },
    { _id: "abd", name: "Orange" }

  ]
}]

有沒有辦法“合並” productsproduct_info以獲得以下信息?

[{
  "products": [
    { id: "abc", price: 20.5, name: "Apple" },
    { id: "abd", price: 34.0, name: "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"
    }
  }}
])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM