Mongo:带有map / reduce的字段中的求和值

时间:2012-08-17 15:55:30

标签: javascript mongodb

我有一个看起来像这样的集合:

{
    "_id" : ObjectId("foo-1"),
    "status" : "good",
    "value" : "100.00"
},

{
    "_id" : ObjectId("foo-2"),
    "status" : "good",
    "value" : "100.00"
}

我想得到两件事:

  • 所有对象的总“值”
  • 具有特定状态的所有对象的总“值”

以下是我的map / reduce函数:

var map = function () {
    emit("total", {sum: this.value )) 
    }

var reduce = function (key, values) {
    var result = {sum:0};
    values.forEach(function (value) {result.sum += value.value;});
    return result;
    }

var t = db.leads.mapReduce(map, reduce, {out : "total"});
db[t.result].find(); 

以上的输出是:

PRIMARY> db[t.result].find();
{ "_id" : "total", "value" : { "sum" : NaN } }

为什么“总和”会回归NaN?

1 个答案:

答案 0 :(得分:0)

在缩减功能中 -

{result.sum += value.value;}

但是您正在发送带有“总和”字段的文档。尝试:

{result.sum += value.sum;}