mongodb 按特定键进行分组和添加值的最佳聚合方式是什么?

7lrncoxx  于 2022-11-22  发布在  Go
关注(0)|答案(1)|浏览(136)

我在mongodb中有一个名为events的集合,下面是其中的一些数据:

[{
  _id: 100,
  streamer_id: a01,
  viewers: 4,
  title: "Event 1"
},{
  _id: 101,
  streamer_id: a01,
  viewers: 7,
  title: "Event 2"
},
{
  _id: 103,
  streamer_id: a02,
  viewers: 3,
  title: "Stream"
},

我基本上希望streamer_id被分组,观众的数量被添加。什么是最好的聚合方式?
还没有尝试过任何东西,因为我不知道如何进行。但这是我所期望的:

[{
  _id: any id,
  streamer_id: a01,
  total_viewers: 11
},{
  _id: any id,
  streamer_id: a02,
  total_viewers: 3
},
w80xi6nr

w80xi6nr1#

请以后先尝试解决该问题。
但是这里有一个使用$group和$sum的简单方法,您也可以使用$project来格式化您想要的文档。
工作示例:https://mongoplayground.net/p/Ucb2EWgC_Y5
查询:

db.collection.aggregate([
  {
    $group: {
      _id: {
        streamer_id: "$streamer_id",
      },
      total_viewers: {
        $sum: "$viewers"
      }
    }
  },
  {
    $project: {
      _id: 0,
      streamer_id: "$_id.streamer_id",
      total_viewers: 1
    }
  }
])

结果:

[
  {
    "streamer_id": "a01",
    "total_viewers": 11
  },
  {
    "streamer_id": "a02",
    "total_viewers": 3
  }
]

相关问题