এজন্য MongoDB-তে aggregate() ব্যবহার করুন। প্রথমে ডকুমেন্টসহ একটি কলেকশন তৈরি করি:
> 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 }
find() মেথড দিয়ে সব ডকুমেন্ট দেখান:
> 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" } ] }
অ্যারেতে অবজেক্টের প্রোপার্টি যোগফল বের করার কোয়েরি:
> 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 } }
])
ফলাফল (খেলোয়াড়ানাম অনুযায়ী টোটাল স্কোর):
{ "Details" : [ { "Details" : "David", "Value" : 600 }, { "Details" : "Chris", "Value" : 1100 } ] }