MapReduce एक ऑपरेशन है जो दस्तावेजों के एक समूह पर लूप करता है और एक ऑपरेशन करता है। मुझे पूरा यकीन नहीं है कि यह वही है जो आप चाहते हैं, लेकिन संभवतः आप अपनी वास्तविक समस्या का एक सरल रूप पोस्ट कर रहे हैं। किसी भी स्थिति में निम्न कोड आपके एकल दस्तावेज़ के लिए 3 बार उत्सर्जन करके काम करता है, दस्तावेज़ के _id को कम करने के कार्य की कुंजी के रूप में उपयोग करता है।
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();