สร้างคอลเลกชันตัวอย่าง
> db.demo131.insertOne(
{
"_id": 101,
"Details": [
{ "PlayerScore": 500, "PlayerName": "Chris" },
{ "PlayerScore": 400, "PlayerName": "David" }
]
}
);
{ "acknowledged": true, "insertedId": 101 }
> db.demo131.insertOne(
{
"_id": 102,
"Details": [
{ "PlayerScore": 600, "PlayerName": "Chris" },
{ "PlayerScore": 200, "PlayerName": "David" }
]
}
);
{ "acknowledged": true, "insertedId": 102 }
แสดงข้อมูล
> db.demo131.find();
{ "_id": 101, "Details": [ { "PlayerScore": 500, "PlayerName": "Chris" }, { "PlayerScore": 400, "PlayerName": "David" } ] }
{ "_id": 102, "Details": [ { "PlayerScore": 600, "PlayerName": "Chris" }, { "PlayerScore": 200, "PlayerName": "David" } ] }
คิวรี Aggregate: $unwind + $group สองครั้ง
> db.demo131.aggregate([
{ $unwind: "$Details" },
{
$group: {
_id: "$Details.PlayerName",
Value: { $sum: "$Details.PlayerScore" }
}
},
{
$group: {
_id: 0,
Details: { $push: { Details: "$_id", Value: "$Value" } }
}
},
{ $project: { Details: 1, _id: 0 } }
])
ผลลัพธ์: รวมคะแนน Chris=1100, David=600
{ "Details": [ { "Details": "David", "Value": 600 }, { "Details": "Chris", "Value": 1100 } ] }