Tính tổng có điều kiện bằng $match và $group
Kết hợp $match (lọc) và $group với $sum để tính tổng giá trị của nhóm document thỏa mãn điều kiện.
Dữ liệu điểm thi
> db.demo329.insertOne({"Name": "Chris", "Age": 21, "Marks": 45});
> db.demo329.insertOne({"Name": "David", "Age": 21, "Marks": 56});
> db.demo329.insertOne({"Name": "Mike", "Age": 21, "Marks": 78});
> db.demo329.insertOne({"Name": "David", "Age": 21, "Marks": 89});
Tổng điểm của David (Age=21)
> db.demo329.aggregate([
{
$match: {
$and: [
{ 'Name': 'David' },
{ Age: 21 }
]
}
},
{
$group: {
_id: null,
TotalMarks: { $sum: "$Marks" }
}
}
]);
Kết quả
{ "_id": null, "TotalMarks": 145 }
Giải thích: 56 + 89 = 145. _id: null nhóm tất cả document khớp thành một nhóm duy nhất.