MongoDB এগ্রিগেশন পাইপলাইনে $match এবং $group দিয়ে ফিল্টার করে সমষ্টি করা
MongoDB-এ নির্দিষ্ট শর্ত অনুযায়ী ডকুমেন্ট ফিল্টার করে (যেমন নির্দিষ্ট নাম এবং বয়স), তারপর একটি ফিল্ডের মোট যোগফল (Sum) বের করতে $match এবং $group স্টেজ ব্যবহার করা হয়।
১. কালেকশন ও নমুনা ডেটা তৈরি
> db.demo329.insertOne({"Name":"Chris","Age":21,"Marks":45});
{ "acknowledged" : true, "insertedId" : ObjectId("5e516f28f8647eb59e56207d") }
> db.demo329.insertOne({"Name":"David","Age":21,"Marks":56});
{ "acknowledged" : true, "insertedId" : ObjectId("5e516f28f8647eb59e56207e") }
> db.demo329.insertOne({"Name":"Mike","Age":21,"Marks":78});
{ "acknowledged" : true, "insertedId" : ObjectId("5e516f29f8647eb59e56207f") }
> db.demo329.insertOne({"Name":"David","Age":21,"Marks":89});
{ "acknowledged" : true, "insertedId" : ObjectId("5e516f29f8647eb59e562080") }
২. সব ডকুমেন্ট দেখানো
> db.demo329.find().pretty();
আউটপুট:
{ "_id" : ObjectId("5e516f28f8647eb59e56207d"), "Name" : "Chris", "Age" : 21, "Marks" : 45 }
{ "_id" : ObjectId("5e516f28f8647eb59e56207e"), "Name" : "David", "Age" : 21, "Marks" : 56 }
{ "_id" : ObjectId("5e516f29f8647eb59e56207f"), "Name" : "Mike", "Age" : 21, "Marks" : 78 }
{ "_id" : ObjectId("5e516f29f8647eb59e562080"), "Name" : "David", "Age" : 21, "Marks" : 89 }
৩. এগ্রিগেশন কোয়েরি: Name="David" এবং Age=21 वालাদের Marks সমষ্টি
> db.demo329.aggregate([
{ $match: { $and: [ { 'Name': 'David' }, { Age: 21 } ] } },
{ $group: { _id: null, TotalMarks: { $sum: "$Marks" } } }
])
স্টেজ ব্যাখ্যা:
$match- ফিল্টার করে শুধু David এবং Age 21 वालাদের রেখে।$group-_id: nullমানে সব মিলে যাওয়া ডকুমেন্ট একসাথে গ্রুপ।$sum: "$Marks"Marks ফিল্ডের যোগফল।
৪. ফলাফল
{ "_id" : null, "TotalMarks" : 145 }
David-এর দুটি ডকুমেন্টের Marks: 56 + 89 = 145। এটি খুব দক্ষতার সাথে বড় ডেটাসেটে কাজ করে।