चूंकि आपके पास किसी सरणी के बजाय किसी ऑब्जेक्ट में मान हैं, इसलिए आपको mapReduce का उपयोग करने की आवश्यकता होगी।
// Emit the values as integers
var mapFunction =
function() {
for (key in this.packets) {
emit(null, parseInt(this.packets[key]));
}
}
// Reduce to a simple sum
var reduceFunction =
function(key, values) {
return Array.sum(values);
}
> db.collection.mapReduce(mapFunction, reduceFunction, {out: {inline:1}})
{
"results" : [
{
"_id" : null,
"value" : 2381
}
],
"ok" : 1,
}
यदि संभव हो, तो आपको इसके बजाय एक संख्यात्मक प्रकार की सरणी के रूप में मानों का उत्सर्जन करना चाहिए क्योंकि इससे आपको अधिक विकल्प मिलते हैं (यानी एकत्रीकरण) और (जब तक कि डेटा सेट बड़ा न हो) संभवतः प्रदर्शन लाभ।