এজন্য MongoDB-তে aggregate() ব্যবহার করুন। প্রথমে ডকুমেন্টসহ একটি কলেকশন তৈরি করি:
> db.demo126.insertOne(
{
"StudentDetails" : {
"Number" : 1,
"OtherDetails" : [
{ "Name" : "Chris", "Score" : 55 }
]
}
}
);
{ "acknowledged" : true, "insertedId" : ObjectId("5e304b3068e7f832db1a7f56") }
> db.demo126.insertOne(
{
"StudentDetails" : {
"Number" : 2,
"OtherDetails" : [
{ "Name" : "Chris", "Score" : 35 },
{ "Name" : "David", "Score" : 87 }
]
}
}
);
{ "acknowledged" : true, "insertedId" : ObjectId("5e304b3068e7f832db1a7f57") }
find() মেথড দিয়ে সব ডকুমেন্ট দেখান:
> db.demo126.find();
আউটপুট:
{ "_id" : ObjectId("5e304b3068e7f832db1a7f56"), "StudentDetails" : { "Number" : 1, "OtherDetails" : [ { "Name" : "Chris", "Score" : 55 } ] } }
{ "_id" : ObjectId("5e304b3068e7f832db1a7f57"), "StudentDetails" : { "Number" : 2, "OtherDetails" : [ { "Name" : "Chris", "Score" : 35 }, { "Name" : "David", "Score" : 87 } ] } }
অ্যারে ভ্যালুর ভিত্তিতে অ্যাগ্রিগেট করার কোয়েরি:
> db.demo126.aggregate([
{ $unwind: "$StudentDetails.OtherDetails" },
{
$group: {
_id: "$StudentDetails.OtherDetails.Name",
quantity: { $sum: "$StudentDetails.OtherDetails.Score" }
}
}
])
ফলাফল (নাম অনুযায়ী টোটাল স্কোর):
{ "_id" : "David", "quantity" : 87 }
{ "_id" : "Chris", "quantity" : 90 }