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 ব্যবহার করে প্রতিটি ইউনিক ভ্যালুর ফ্রিকোয়েন্সি গণনা করা হয়েছে।