MongoDB:当前的字段总和

时间:2014-10-06 09:43:36

标签: javascript mongodb mapreduce mongodb-query

我们有文件

{a: 1}
{a: 5}
{a: 3}

如何使用calc current sum汇总数据?

{a: 1, cs: 1}
{a: 5, cs: 6}
{a: 3, cs: 9}

1 个答案:

答案 0 :(得分:1)

您只能使用mapReduce在MongoDB中执行此类操作。原因是,目前是唯一的地方可以容纳"全球" 变量,这基本上是您需要的 "运行总计"

db.collection.mapReduce(
    function(){ 
        totals += this.a;
        emit(this._id, {"a": this.a, "cs": totals});
    },
    function() {},  // nothing to reduce here
    {
        "out": { "inline": 1 },
        "scope": { "totals": 0 }
    }
);

所以这里没有"没有真正的分组",但如果你愿意,你可以这样做。关键是这样可以保持"运行总量"每条记录,这是你似乎要问的。

"mapReduce"命令有一个方面称为"范围"用于实现"全球"可用于此类任务的变量。