{ “ id”:1 “统计信息”:[ { “数字”:100, “年”:2014 }, { “数字”:200, “年”:2015 } ] }
我想使用累加来将数字与数组求和,我已经累了,但是没有得到,应该给我300
答案 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”
希望这会有所帮助。