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

MongoDB-এ অন্য ফিল্ড দিয়ে গ্রুপ করে ইউনিক ফিল্ড গণনা করা ($group, $sum)


MongoDB এগ্রিগেশনে ডাবল $group ব্যবহার করে একটি ফিল্ড দিয়ে গ্রুপ করে অন্য ফিল্ডের ইউনিক কাউন্ট করা

MongoDB-এ একটি ফিল্ড (যেমন Name1) দিয়ে গ্রুপ করে, অন্য ফিল্ড (Name2) এর ইউনিক (Distinct) মান সংখ্যা বের করতে দুটি $group স্টেজ কম্বাইন করে ব্যবহার করা হয়। প্রথমে কম্বিনেশন গ্রুপ, তারপর আউটার গ্রুপ।

১. কালেকশন ও নমুনা ডেটা তৈরি (ডুপ্লিকেট কম্বিনেশন সহ)

> db.demo354.insertOne({"Name1":"Chris","Name2":"David"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e5685a6f8647eb59e5620c0") }
> db.demo354.insertOne({"Name1":"Chris","Name2":"David"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e5685a9f8647eb59e5620c1") }
> db.demo354.insertOne({"Name1":"Chris","Name2":"Bob"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e5685aff8647eb59e5620c2") }
> db.demo354.insertOne({"Name1":"Carol","Name2":"John"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e5685c4f8647eb59e5620c3") }
> db.demo354.insertOne({"Name1":"Carol","Name2":"John"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e5685c5f8647eb59e5620c4") }

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

> db.demo354.find();

আউটপুট:


৩. ডাবল গ্রুপ এগ্রিগেশন কোয়েরি

> db.demo354.aggregate([
  { $group: { _id: { "Name1": "$Name1", "Name2": "$Name2" } } },
  { $group: { _id: "$_id.Name1", "Name2": { $sum: 1 } } },
  { $project: { _id: 0, Name1: "$_id", Name2: 1 } }
])

স্টেজ ব্যাখ্যা:

  1. ১ম $group: _id: {Name1, Name2} - Name1+Name2 কম্বিনেশন দিয়ে গ্রুপ। ডুপ্লিকেট কম্বিনেশন (Chris+David দুইবার, Carol+John দুইবার) একবার হয়ে যায়। ফলাফল: ৩টি ইউনিক কম্বিনেশন।
  2. ২য় $group: _id: "$_id.Name1" - এখন Name1 দিয়ে গ্রুপ। Name2: {$sum: 1} - প্রতিটি Name1-র জন্য ইউনিক Name2 কতটি আছে তা কাউন্ট।
  3. $project: আউটপুট ফরম্যাটিং।

৪. ফলাফল

অর্থ:

  • Chris-র সাথে যুক্ত ইউনিক Name2: ২টি (David, Bob)।
  • Carol-র সাথে যুক্ত ইউনিক Name2: ১টি (John)।

এটি "প্রতি ক্যাটাগরি কতটি ইউনিক প্রোডাক্ট" টাইপ রিপোর্টের জন্য আদর্শ।


  1. MongoDB-তে একাধিক ডকুমেন্ট ফিল্ডে একজ্যাক্ট ম্যাচ কোয়ারি

  2. MongoDB-এ ফিল্ড অনুযায়ী ডকুমেন্ট গ্রুপ করা ($group এবং $project)

  3. MongoDB অ্যাগ্রিগেশন দিয়ে সব ডকুমেন্ট জুড়ে ডISTINCT মান গণনা করা

  4. MongoDB-এ "@email" স্ট্রিং সার্চ করা ফিল্ড ভ্যালুতে