次のようなコレクションがあります。
{
"_id" : ObjectId("foo-1"),
"status" : "good",
"value" : "100.00"
},
{
"_id" : ObjectId("foo-2"),
"status" : "good",
"value" : "100.00"
}
私は2つのものを手に入れたいです:
- すべてのオブジェクトの合計「値」
- 特定のステータスを持つすべてのオブジェクトの合計 "値
これが私のマップ/リデュース関数です:
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に戻ってくるのですか?