MongoDB-এ নির্দিষ্ট শর্ত অনুযায়ী ফিল্ডের যোগফল (sum) বের করতে অ্যাগ্রিগেশন পাইপলাইনে $match (ফিল্টার) এবং $group (গ্রুপিং এবং সাম) ব্যবহার করা হয়।
নমুনা কালেকশন তৈরি
> db.getSumOfFieldsDemo.insertOne({ "Customer_Id": 101, "Price": 50, "Status": "Active" });
{ "acknowledged": true, "insertedId": ObjectId("5e06cec29e4dae213890ac55") }
> db.getSumOfFieldsDemo.insertOne({ "Customer_Id": 102, "Price": 200, "Status": "Inactive" });
{ "acknowledged": true, "insertedId": ObjectId("5e06ced19e4dae213890ac56") }
> db.getSumOfFieldsDemo.insertOne({ "Customer_Id": 101, "Price": 3000, "Status": "Active" });
{ "acknowledged": true, "insertedId": ObjectId("5e06cedd9e4dae213890ac57") }
> db.getSumOfFieldsDemo.insertOne({ "Customer_Id": 103, "Price": 400, "Status": "Active" });
{ "acknowledged": true, "insertedId": ObjectId("5e06cee79e4dae213890ac58") }
সমস্ত ডকুমেন্ট প্রদর্শন
> db.getSumOfFieldsDemo.find().pretty();
আউটপুট:
{ "_id": ObjectId("5e06cec29e4dae213890ac55"), "Customer_Id": 101, "Price": 50, "Status": "Active" }
{ "_id": ObjectId("5e06ced19e4dae213890ac56"), "Customer_Id": 102, "Price": 200, "Status": "Inactive" }
{ "_id": ObjectId("5e06cedd9e4dae213890ac57"), "Customer_Id": 101, "Price": 3000, "Status": "Active" }
{ "_id": ObjectId("5e06cee79e4dae213890ac58"), "Customer_Id": 103, "Price": 400, "Status": "Active" }
Active স্ট্যাটাসের প্রাইস সাম করা (গ্রুপ বাই Customer_Id)
> db.getSumOfFieldsDemo.aggregate([
{ $match: { Status: "Active" } },
{ $group: { _id: "$Customer_Id", TotalSum: { $sum: "$Price" } } }
]);
ফলাফল
{ "_id": 103, "TotalSum": 400 }
{ "_id": 101, "TotalSum": 3050 }
ব্যাখ্যা:
$match: { Status: "Active" }- শুধু Active স্ট্যাটাস वाले ডকুমেন্ট ফিল্টার করে (Customer_Id: 101, 101, 103)।$group-Customer_Idদিয়ে গ্রুপ করেPriceফিল্ডের যোগফল বের করে।- Customer_Id 101: 50 + 3000 = 3050
- Customer_Id 103: 400
- Customer_Id 102 (Inactive) বাদ পড়েছে।
সব Active রেকর্ডের মোট সাম (গ্রুপ ছাড়া)
db.getSumOfFieldsDemo.aggregate([
{ $match: { Status: "Active" } },
{ $group: { _id: null, GrandTotal: { $sum: "$Price" } } }
]);
ফলাফল: { "_id": null, "GrandTotal": 3450 }