我有一些按照小时时间统计的数据: "name": "张三", "hour": { "0": { "num": 11 "1": { "num": 12 "name": "李四", "hour": { "0": { "num": 21 "1": { "num": 22 想把"0"--"9"十个时间点所有人的num数加起来,该如何操作? 即例子中的:(11+12+...) + (21+22+...)+... 或(11+21+...)+ (12+22+...)+...
可以用mapReduce做,map里用固定值作为key,并计算单个人十个时间点的总和作为value;reduce里再进行所有人的求和。 db.collection.mapReduce(function(){ const hourDict = this.data.hour; const personSum = hourDict.0.num + hourDict.1.num + ...; emit('allHours', personSum);