जिस दस्तावेज़ पर काम किया जाना है वह नीचे है। यह नेस्टेड ऑब्जेक्ट है:एक ऑब्जेक्ट (की-वैल्यू पेयर जिसका मान 100 है) एक ऑब्जेक्ट ('0') के भीतर नेस्ट किया जाता है (इसे एक स्ट्रिंग के रूप में लिखा जाता है), और यह किसी अन्य ऑब्जेक्ट ("japanese3") के अंदर नेस्ट किया जाता है। उपयोगकर्ता नाम का उपयोग सही दस्तावेज़ प्राप्त करने के लिए एक क्वेरी के रूप में किया जाता है।
{ japanese3:
{ '0':
{"japanese3a": 100, "japanese3b": 100, "japanese3c": 100}
}
}
लक्ष्य सबसे गहरे नेस्टेड ऑब्जेक्ट में संख्या मानों को जोड़ना है, इसलिए वांछित परिणाम "300" है।
स्क्रिप्ट है:
.aggregate([
{$match: {username: username}}, //finds the document by username
{$set: {"japanese_array":{$objectToArray: "$japanese3.0"}}}, // all fields have the same name now (k, v)
{$project: {_id:0, total:{$sum: "$japanese_array2.v"}}}// sum up the "v" fields
])
.toArray(function(err, result){
if (err)
console.log("Failed");
console.log(result);
res.send({ status: true, msg: result[0].total}); //result shows up as a number, in this case: 300
});
});