【发布时间】:2020-07-26 08:43:18
【问题描述】:
{ “身份证”:1, “统计”:[ { “数字”:100, “年份”:2014 }, { “数字”:200, “年份”:2015 } ] }
我想用我累了但没有得到它的聚合将数字与数组相加,应该给我 300
【问题讨论】:
-
请您编辑问题以显示您尝试过的一些代码以及预期的输出。
{ “身份证”:1, “统计”:[ { “数字”:100, “年份”:2014 }, { “数字”:200, “年份”:2015 } ] }
我想用我累了但没有得到它的聚合将数字与数组相加,应该给我 300
【问题讨论】:
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'
希望这会有所帮助。
【讨论】: