MapReduce adalah operasi yang mengulang sekelompok dokumen dan melakukan operasi. Saya tidak sepenuhnya yakin itu yang Anda inginkan, tetapi mungkin Anda memposting bentuk yang lebih sederhana dari masalah Anda yang sebenarnya. Bagaimanapun kode berikut bekerja dengan memancarkan 3 kali untuk satu dokumen Anda, menggunakan _id dokumen sebagai kunci untuk fungsi pengurangan.
doc = {_id : 16, days : { 1 : 123, 2 : 129, 3 : 140, 4 : 56, 5 : 57, 6 : 69, 7 : 80 }};
db.so.insert(doc);
map = function() {
emit(this._id, this.days["1"]);
emit(this._id, this.days["3"]);
emit(this._id, this.days["7"]);
}
reduce = function (k, vals) {
var sum = 0;
vals.forEach(function (v) {sum += v;});
return sum;
}
res = db.so.mapReduce(map, reduce, {out : {inline : 1}});
res.find();