Sum columns mongodb



我有这个集合

{a:0,b:1,c:1,d:1}
{a:1,b:1,c:0,d:1}
{a:1,b:1,c:0,d:1}

我想要这个结果与mapReduce一起

{id: any, A:2,B:3,C:1,D:3}

但我不知道怎么做,我只能总结一下 onde collumn我是怎么做到的?

您可以在

map函数中为所有记录emit一个公用键:

var map = function(){emit(1,this);}

reduce函数将计算总和并返回值。

var reduce = function(key,values){
var result = {};
values.forEach(function(i){
 Object.keys(i).forEach(function(key){
 if(result.hasOwnProperty(key)){
    result[key] = i[key]+result[key];
 }
 else{
    result[key] = i[key];
 }
})
})
return result;
}

执行地图缩减:

db.collection.mapReduce(map,reduce,{ out: "out"})

如果您事先知道密钥,那么只需使用管道中的$group阶段即可轻松聚合结果。

db.collection.aggregate([
{$group:{"_id":null,
         "a":{$sum:"$a"},
         "b":{$sum:"$b"},
         "c":{$sum:"$c"},
         "d":{$sum:"$d"}}}
])

相关内容

  • 没有找到相关文章

最新更新