distinct() মেথড ব্যবহার করে ফিল্ডের সব ইউনিক ভ্যালু পাওয়া
একটি ফিল্ডে থাকা সব ভ্যালু (ডুপ্লিকেট বাদ দিয়ে) পেতে distinct() মেথড ব্যবহার করা হয়। ফিল্ডটি অ্যারে হলে অ্যারেতে থাকা সব এলিমেন্টের ইউনিক ভ্যালু রিটার্ন করে।
সিনট্যাক্স
db.yourCollectionName.distinct("yourFieldName");
উদাহরণ (অ্যারে ফিল্ড)
> db.listAllValuesOfCeratinFieldsDemo.insertOne({"ListOfValues":[10,20,30]});
> db.listAllValuesOfCeratinFieldsDemo.insertOne({"ListOfValues":[40,50,60]});
> db.listAllValuesOfCeratinFieldsDemo.insertOne({"ListOfValues":[10,20,30]});
> db.listAllValuesOfCeratinFieldsDemo.insertOne({"ListOfValues":[40,50,70]});
ListOfValues ফিল্ডের সব ইউনিক ভ্যালু
> db.listAllValuesOfCeratinFieldsDemo.distinct("ListOfValues");
[ 10, 20, 30, 40, 50, 60, 70 ]
ব্যাখ্যা: অ্যারে ফিল্ডের জন্য distinct অ্যারেতে থাকা সব এলিমেন্টকে ফ্ল্যাটেন (flatten) করে ইউনিক ভ্যালু রিটার্ন করে। ১০, ২০, ৩০, ৪০, ৫০ একাধিকবার থাকা সত্ত্বেও একবারই আসেছে।
টিপস: সাধারণ (non-array) ফিল্ডের জন্যও একইভাবে কাজ করে। বড় ডেটাসেটে Aggregation ($unwind + $group) ব্যবহার করা ভালো।