数组对象上的MongoDB聚合总和使它起作用

时间:2020-07-26 00:08:06

标签: arrays mongodb mongoose

{ “ id”:1 “统计信息”:[ { “数字”:100, “年”:2014 }, { “数字”:200, “年”:2015 } ] }

我想使用累加来将数字与数组求和,我已经累了,但是没有得到,应该给我300

1 个答案:

答案 0 :(得分:0)

db.test.aggregate([
  {$project: 
    {totalSum: 
      {$reduce: 
        {input:'$stats', initialValue:0, in: {$sum: '$stats.number'}}
      }
    }
  }
  ])

您基本上只想添加一个将包含总和的字段(可以使用$ addFields或$ projects),然后您想将给定数组减小为单个值,这正是$ reduce阶段所做的。 (https://docs.mongodb.com/manual/reference/operator/aggregation/reduce/

reduce阶段需要3个参数:'input'需要对数组的引用;'initialValue'您可以将其视为累加器变量;对于最后一个参数,'in'需要您要存储的内容在那个累加器变量中。在这种情况下,您想要总结“ $ stats.number”

希望这会有所帮助。