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

MongoDB-এ অ্যারে-র ভেতরের ডকুমেন্ট সংখ্যা গণনা করা (Count Documents in Array)


MongoDB এগ্রিগেশনে $project, $cond, $size, $isArray ব্যবহার করে অ্যারে-র এলিমেন্ট কাউন্ট করা

MongoDB-এ একটি ডকুমেন্টের ভেতরে অ্যারে ফিল্ড থাকলে, প্রতিটি ডকুমেন্টের জন্য সেই অ্যারে-তে কতটি এলিমেন্ট (সাব-ডকুমেন্ট) আছে তা গণনা করতে এগ্রিগেশন পাইপলাইন ব্যবহার করা হয়।

১. কালেকশন ও ভিন্ন আকারের অ্যারে ডেটা তৈরি

> db.demo332.insertOne({details:[{Name:"Chris",Age:21}]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e521f16f8647eb59e56208e") }
> db.demo332.insertOne({details:[{Name:"David",Age:23},{Name:"Bob",Age:22}]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e521f21f8647eb59e56208f") }

২. সব ডকুমেন্ট দেখানো

> db.demo332.find();

আউটপুট:

{ "_id" : ObjectId("5e521f16f8647eb59e56208e"), "details" : [ { "Name" : "Chris", "Age" : 21 } ] }
{ "_id" : ObjectId("5e521f21f8647eb59e56208f"), "details" : [ { "Name" : "David", "Age" : 23 }, { "Name" : "Bob", "Age" : 22 } ] }

৩. এগ্রিগেশন কোয়েরি: প্রতিটি ডকুমেন্টের details অ্যারে-র সাইজ গণনা

> db.demo332.aggregate([
  { $project: {
      numberOfDocuments: { $cond: {
        if: { $isArray: "$details" },
        then: { $size: "$details" },
        else: "No Documents"
      }}
  }}
])

ব্যাখ্যা:

  • $isArray: "$details" - details ফিল্ডটি অ্যারে কিনা চেক করে।
  • $size: "$details" - অ্যারে-র এলিমেন্ট সংখ্যা রিটার্ন করে।
  • $cond - If-Then-Else লজিক: অ্যারে হলে সাইজ, নাহলে "No Documents"।

৪. ফলাফল

{ "_id" : ObjectId("5e521f16f8647eb59e56208e"), "numberOfDocuments" : 1 }
{ "_id" : ObjectId("5e521f21f8647eb59e56208f"), "numberOfDocuments" : 2 }

প্রথম ডকুমেন্টে ১টি, দ্বিতীয় ডকুমেন্টে ২টি সাব-ডকুমেন্ট আছে। এটি রিয়েল-টাইম অ্যানালিটিক্স বা রিপোর্টিং-এ খুব কাজে লাগে।


  1. MongoDB-এ ক্যাপড কালেকশন ব্যবহার করে ডকুমেন্ট সংখ্যা লিমিট করা

  2. MongoDB-তে অ্যারে এলিমেন্টের সংখ্যা গুনে নতুন ফিল্ডে দেখানো ($size)

  3. MongoDB-তে $unset ব্যবহার করে পুরো অ্যারে ফিল্ড মুছে ফেলা

  4. MongoDB ডকুমেন্টের নির্দিষ্ট ফিল্ড থেকে অ্যারে এলিমেন্ট কাউন্ট করা