MongoDB-এ অ্যারেতে নেস্টেড ফিল্ডের যোগফল (sum) বের করতে অ্যাগ্রিগেশন পাইপলাইনে $sum অপারেটর ব্যবহার করা হয়।
কলেকশন এবং ডকুমেন্ট তৈরি
> db.demo96.insertOne({
... "Name" : "Chris",
... "Details" : [
... { "Marks": 67 },
... { "Marks": 33 },
... { "Marks": 50 }
... ]
... });
{ "acknowledged" : true, "insertedId" : ObjectId("5e2d6aadb8903cdd865577ad") }
সব ডকুমেন্ট দেখানো
> db.demo96.find();
আউটপুট:
{ "_id" : ObjectId("5e2d6aadb8903cdd865577ad"), "Name" : "Chris", "Details" : [ { "Marks" : 67 }, { "Marks" : 33 }, { "Marks" : 50 } ] }
যোগফল বের করার কোয়ারী
$project স্টেজে $sum ব্যবহার করে Details.Marks অ্যারের সব মান যোগ করা হয়েছে:
> db.demo96.aggregate([
... { "$project": {
... "Name": 1,
... "TotalMarks": { "$sum": "$Details.Marks" }
... }}
... ]);
ফলাফল
{ "_id" : ObjectId("5e2d6aadb8903cdd865577ad"), "Name" : "Chris", "TotalMarks" : 150 }
গণনা: ৬৭ + ৩৩ + ৫০ = ১৫০
ব্যাখ্যা:
$Details.Marks- অ্যারেতে সব ডকুমেন্টেরMarksফিল্ডের মানগুলো একসাথে আনে$sum- সেগুলোর যোগফল বের করেName: 1- আউটপুটে Name ফিল্ডও রাখা হয়েছে
বিকল্প পদ্ধতি (unwind ব্যবহার করে):
db.demo96.aggregate([
{ $unwind: "$Details" },
{ $group: { _id: "$_id", Name: { $first: "$Name" }, TotalMarks: { $sum: "$Details.Marks" } } }
])
এই পদ্ধতিটি বড় অ্যারে বা জটিল ক্যালকুলেশনের জন্য বেশি ফ্লেক্সিবল।