mongodb 如何在Mongo聚合中获取字段数组

jhiyze9q  于 2023-01-08  发布在  Go
关注(0)|答案(1)|浏览(146)

我使用的是Mongo聚合框架,假设我有这样的集合结构

{
  {
    _id: ObjectId(123)
    name: john,
    sessionDuration: 29
  },
  {
    _id: ObjectId(456)
    name: moore,
    sessionDuration: 45
  },
  {
    _id: ObjectId(789)
    name: cary,
    sessionDuration: 25
  },
}

我想查询并创建一个管道,使其返回如下内容:

{
  durationsArr: [29, 49, 25, '$sessionDuration_Field_From_Document' ];
}

我这样做是因为我想得到所有文档的平均持续时间,所以首先将所有文档添加到一个数组中,然后添加最后一个阶段,在那里我执行$avg操作。
你知道我怎样才能得到sessionDurationField的数组吗?或者你有没有其他最好的方法来从集合中计算sessionDuration Average?请彻底解释我是mongo聚合的新手。

xzv2uavs

xzv2uavs1#

  1. $group-对所有文档进行分组。
    1.1. $avg-计算所有文档的sessionDuration平均值。
db.collection.aggregate([
  {
    $group: {
      _id: null,
      avgSessionDuration: {
        $avg: "$sessionDuration"
      }
    }
  }
])

Demo @ Mongo Playground

相关问题