Mongodb Mongo DB-如何在供应商的基础上获得集团产品?

Mongodb Mongo DB-如何在供应商的基础上获得集团产品?,mongodb,Mongodb,我需要你的帮助。鉴于下面的结构,我需要查询 以获取给定供应商所有“产品”的方式记录 { "supplier" : [ {"name" : "supplier 1", "products" : [ { "name" : "product 1" } { "na

我需要你的帮助。鉴于下面的结构,我需要查询 以获取给定供应商所有“产品”的方式记录

{
    "supplier" : [ 
        {"name" : "supplier 1",
            "products" : [
                { "name" : "product 1" }
                { "name" : "product 2" }
            ]
        },
        {
         "name" : "supplier 1",
             "products" : [
                { "name" : "product 3" }
            ]
        },
        {
         "name" : "supplier 2",
             "products" : [
                { "name" : "product 3" }
            ]
        },
    ]
}
“供应商1”的最终文件应 如下所示(或类似)

结果应仅包含
产品的唯一值。
对于这一点,什么是好的服务器端解决方案?提前谢谢。

  • $unwind
    解构
    供应商
    数组
  • $group
    供应商提供。名称
    并制作
    产品的数组
  • $project
    显示必填字段,
    $reduce
    使用
    $concatarray

非常感谢!那很好用。我不知道$reduce/$concathArrays功能。那真的很有帮助!祝你圣诞快乐
{
    "products" : [
        { "name" : "product 1" },
        { "name" : "product 2" },
        { "name" : "product 3" }
    ]
      
}
db.collection.aggregate([
  { $unwind: "$supplier" },
  {
    $group: {
      _id: "$supplier.name",
      products: { $push: "$supplier.products" }
    }
  },
  {
    $project: {
      _id: 0,
      name: "$_id",
      products: {
        $reduce: {
          input: "$products",
          initialValue: [],
          in: { $concatArrays: ["$$this", "$$value"] }
        }
      }
    }
  }
])