聚合组多个结果

aggregate group multiple result

我尝试聚合操作“$group”.. 我想得到多组结果。

我的数据是这样的..

items: [
  {
   director: "James",
   category: "fruit",
   name: "apple",
   money: 5000
  },
  {
   director: "James",
   category: "toy",
   name: "dragon",
   money: 15000
  },
  {
   director: "Sam",
   category: "fruit",
   name: "orange",
   money: 3500
  }
]

我要得到结果,这个!!

directorList:[
  {
   director: "James",
   money: 20000
  },
  {
   director: "Sam",
   money: 3500
  }
],
categoryList: [
  {
   category: "fruit",
   money: 8500
  },
  {
   category: "toy",
   money: 15000
  }
]

请回答.. 谢谢..!!

您可以尝试以下聚合

db.collection.aggregate([
  { "$facet": {
    "directorList": [
      { "$group": {
        "_id": "$director",
        "money": { "$sum": "$money" }
      }},
      { "$project": {
        "_id": false,
        "director": "$_id",
        "money": 1
      }}
    ],
    "categoryList": [
      { "$group:" {
        "_id": "$category",
        "money": { "$sum": "$money" }
      }},
      { "$project": {
        "_id": false,
        "category": "$_id",
        "money": 1
      }}
    ]
  }}
])

输出

[
  {
    "categoryList": [
      {
        "category": "toy",
        "money": 15000
      },
      {
        "category": "fruit",
        "money": 8500
      }
    ],
    "directorList": [
      {
        "director": "Sam",
        "money": 3500
      },
      {
        "director": "James",
        "money": 20000
      }
    ]
  }
]

MongoPlayGround

我又遇到问题被屏蔽了..

items: [
  {
   mart_code : 1,
   director: "James",
   category: "fruit",
   name: "apple",
   money: 5000
  },
  {
   mart_code: 1
   director: "James",
   category: "toy",
   name: "dragon",
   money: 15000
  },
  {
   mart_code: 2,
   director: "Sam",
   category: "fruit",
   name: "orange",
   money: 3500
  }
]

我想得到结果.. mart_code 添加..

martList: [ {
  mart_code: 1,
  directorList:[
  {
   director: "James",
   money: 20000
  }
  ],
  categoryList: [
  {
   category: "fruit",
   money: 5000
  },
  {
   category: "toy",
   money: 15000
  }] 
},
{
  mart_code: 2,
  directorList:[
  {
   director: "Sam",
   money: 3500
  }
  ],
  categoryList: [
  {
   category: "fruit",
   money: 3500
  }]
}
]

我正在尝试 $facet、$group、$project... 有什么有效的方法吗?