Mongodb 聚合组多重结果

Mongodb 聚合组多重结果,mongodb,aggregation-framework,aggregate,aggregation,Mongodb,Aggregation Framework,Aggregate,Aggregation,我尝试聚合操作“$group”。。 我想得到多组结果 我的数据是 items: [ { director: "James", category: "fruit", name: "apple", money: 5000 }, { director: "James", category: "toy", name: "dragon", money: 15000 }, { director: "Sam", category:

我尝试聚合操作“$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
      }
    ]
  }
]

我遇到了另一个问题

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_代码

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。。。
有没有一种有效的方法?

到目前为止您尝试了什么?$REWIND、$group和$group、$project。。。。。和$unwind、$group、$group。。。。。我不知道怎么做。这太棒了!哇!非常感谢。很高兴听到你的回答。