首页 > 解决方案 > 在 MongoDB 聚合中将 $sum 和 $avg 与 $addFields 一起使用

问题描述

根据文档,两者$avg$sum仅在$projectand$group阶段可用。

所以我的问题是,当涉及到 时$addFields,我可以将其作为聚合管道中的一个阶段吗?:

// stage 5
$addFields: {
  "companyTransactionAvg": {
    "$avg": {
      "$sum": "$totals.sixWeekTransactionAvg"
    }
  }
}

这不会出错。结果我得到一个数值。这是在做我认为的事情,还是发生了其他事情?我正在尝试获取sixWeekTransactionAvg所有文档中所有值的平均值。

这将作为我管道中的一个独立阶段工作,还是需要明确包含在 a$project$group阶段中?

标签: javascriptmongodbaggregation-framework

解决方案


我现在意识到,虽然可以做到这一点,但这里真正发生的事情是获得一个值之和的平均值。因为没有进行 $grouping,所以只读取一个文档,而不是所有文档,并且输出该文档中该值的平均值 ( $avg) 。$sum当然,考虑到它只是一个值,the $avgof the$sum总是与原始值本身相同。

value: 10
averageOfValue: 10

推荐阅读