Tài liệu sẽ được làm việc ở bên dưới. Nó là các đối tượng lồng nhau:một đối tượng (các cặp khóa-giá trị với giá trị là 100) được lồng trong một đối tượng ('0') (đối tượng này được viết dưới dạng chuỗi) và đối tượng này được lồng bên trong một đối tượng khác ("japanese3"). Tên người dùng được sử dụng như một truy vấn để lấy đúng tài liệu.
{ japanese3:
{ '0':
{"japanese3a": 100, "japanese3b": 100, "japanese3c": 100}
}
}
Mục tiêu là tổng các giá trị số trong đối tượng lồng nhau sâu nhất, do đó, kết quả mong muốn là "300".
Tập lệnh là:
.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
});
});