কম্পিউটার টিউটোরিয়াল

MongoDB-এ অ্যারেতে ফিল্ডের যোগফল (Sum) বের করা

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" } } }
])

এই পদ্ধতিটি বড় অ্যারে বা জটিল ক্যালকুলেশনের জন্য বেশি ফ্লেক্সিবল।

  1. MongoDB ডকুমেন্টের মধ্যে অ্যারে আইটেম কীভাবে পাবেন?

  2. MongoDB-তে অবজেক্টের অ্যারেতে _id দিয়ে খুঁজে বের করা

  3. MongoDB-তে অ্যারے के ভেতরের এলিমেন্ট আপডেট

  4. MongoDB-এ অ্যারে অবজেক্টের মধ্যে একাধিক শর্ত ম্যাচ করা