Dokumen yang akan dikerjakan ada di bawah. Itu adalah objek bersarang:objek (pasangan nilai kunci dengan nilai 100) bersarang di dalam objek ('0') (ini ditulis sebagai string), dan ini bersarang di dalam objek lain ("japanese3"). Nama pengguna digunakan sebagai kueri untuk mendapatkan dokumen yang tepat.
{ japanese3:
{ '0':
{"japanese3a": 100, "japanese3b": 100, "japanese3c": 100}
}
}
Tujuannya adalah untuk menjumlahkan nilai angka pada objek yang tersarang paling dalam, sehingga hasil yang diinginkan adalah "300".
Scriptnya adalah:
.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
});
});