【问题标题】:MongoDB Aggregation Sum on Objects in Array make it work数组中对象的MongoDB聚合总和使其工作
【发布时间】:2020-07-26 08:43:18
【问题描述】:

{ “身份证”:1, “统计”:[ { “数字”:100, “年份”:2014 }, { “数字”:200, “年份”:2015 } ] }

我想用我累了但没有得到它的聚合将数字与数组相加,应该给我 300

【问题讨论】:

  • 请您编辑问题以显示您尝试过的一些代码以及预期的输出。

标签: arrays mongodb mongoose


【解决方案1】:
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'

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-21
    • 1970-01-01
    • 1970-01-01
    • 2020-07-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多