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

MongoDB-এ অ্যারে-ভিত্তিক ফিল্ডের সব ডকুমেন্ট জুড়ে ইউনিক আইটেম গণনা করা

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

> db.demo493.insertOne({"SubjectName":["MySQL","MongoDB","Java"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e849f97b0f3fa88e22790c4") }
> db.demo493.insertOne({"SubjectName":["C++","MongoDB","C"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e849fa4b0f3fa88e22790c5") }
> db.demo493.insertOne({"SubjectName":["MySQL","MongoDB","C"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e849fb2b0f3fa88e22790c6") }

find() মেথড ব্যবহার করে কালেকশন থেকে সব ডকুমেন্ট প্রদর্শন করুন:

> db.demo493.find();

এটি নিচের আউটপুট দেবে:

{ "_id" : ObjectId("5e849f97b0f3fa88e22790c4"), "SubjectName" : [ "MySQL", "MongoDB", "Java" ] }
{ "_id" : ObjectId("5e849fa4b0f3fa88e22790c5"), "SubjectName" : [ "C++", "MongoDB", "C" ] }
{ "_id" : ObjectId("5e849fb2b0f3fa88e22790c6"), "SubjectName" : [ "MySQL", "MongoDB", "C" ] }

সব ডকুমেন্ট জুড়ে অ্যারে-ভিত্তিক ফিল্ডের ইউনিক আইটেম গণনা করার কোয়েরি:

> db.demo493.aggregate([
    { $unwind: "$SubjectName" },
    { $group: { _id: "$SubjectName", Frequency: { $sum : 1 } } }
]);

এটি নিচের আউটপুট দেবে:

{ "_id" : "C++", "Frequency" : 1 }
{ "_id" : "C", "Frequency" : 2 }
{ "_id" : "Java", "Frequency" : 1 }
{ "_id" : "MySQL", "Frequency" : 2 }
{ "_id" : "MongoDB", "Frequency" : 3 }

ব্যাখ্যা: এখানে $unwind অ্যারে-টিকে ডিকম্পোজ করে প্রতিটি এলিমেন্টকে আলাদা ডকুমেন্টে পরিবর্তন করে। তারপর $group স্টেজে $sum: 1 ব্যবহার করে প্রতিটি ইউনিক ভ্যালুর ফ্রিকোয়েন্সি গণনা করা হয়েছে।

  1. MongoDB-তে ফিল্ড এবং সাবফিল্ড অনুযায়ী আইটেম ফিল্টার করা

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

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

  4. MongoDB এগ্রিগেশন: একাধিক ফিল্ড দিয়ে কাউন্ট করা