MongoDB-এ distinct() শুধু এক ফিল্ডে কাজ করে। একাধিক ফিল্ডের অনন্য মান কম্বাইন করে পাওয়ার জন্য অ্যাগ্রিগেশন পাইপলাইনে $group এবং $addToSet ব্যবহার করা হয়।
নমুনা ডেটা তৈরি
> db.distinctOnMultipleFieldsDemo.insertOne({"StudentFirstName":"Chris","StudentAge":21,"StudentCountryName":"US"});
{ "acknowledged": true, "insertedId": ObjectId("5cd2e518b64f4b851c3a13d7") }
> db.distinctOnMultipleFieldsDemo.insertOne({"StudentFirstName":"Robert","StudentAge":21,"StudentCountryName":"AUS"});
{ "acknowledged": true, "insertedId": ObjectId("5cd2e518b64f4b851c3a13d8") }
> db.distinctOnMultipleFieldsDemo.insertOne({"StudentFirstName":"Chris","StudentAge":22,"StudentCountryName":"UK"});
{ "acknowledged": true, "insertedId": ObjectId("5cd2e518b64f4b851c3a13d9") }
> db.distinctOnMultipleFieldsDemo.insertOne({"StudentFirstName":"David","StudentAge":24,"StudentCountryName":"AUS"});
{ "acknowledged": true, "insertedId": ObjectId("5cd2e518b64f4b851c3a13da") }
সব ডকুমেন্ট দেখুন
> db.distinctOnMultipleFieldsDemo.find().pretty();আউটপুট:
{
"_id": ObjectId("5cd2e518b64f4b851c3a13d7"),
"StudentFirstName": "Chris",
"StudentAge": 21,
"StudentCountryName": "US"
}
{
"_id": ObjectId("5cd2e518b64f4b851c3a13d8"),
"StudentFirstName": "Robert",
"StudentAge": 21,
"StudentCountryName": "AUS"
}
{
"_id": ObjectId("5cd2e518b64f4b851c3a13d9"),
"StudentFirstName": "Chris",
"StudentAge": 22,
"StudentCountryName": "UK"
}
{
"_id": ObjectId("5cd2e518b64f4b851c3a13da"),
"StudentFirstName": "David",
"StudentAge": 24,
"StudentCountryName": "AUS"
}
অ্যাগ্রিগেশন দিয়ে একাধিক ফিল্ডের অনন্য মান বের করা
> db.distinctOnMultipleFieldsDemo.aggregate([
{
$group: {
_id: 0,
StudentFirstName: {$addToSet: '$StudentFirstName'},
StudentAge: {$addToSet: '$StudentAge'},
StudentCountryName: {$addToSet: '$StudentCountryName'}
}
}
]);
আউটপুট:
{
"_id": 0,
"StudentFirstName": ["David", "Robert", "Chris"],
"StudentAge": [24, 22, 21],
"StudentCountryName": ["UK", "AUS", "US"]
}
ব্যাখ্যা: $addToSet অ্যারেতে ডুপ্লিকেট না যোগ করে অনন্য মান রাখে। _id: 0 মানে সব ডকুমেন্ট একই গ্রুপে। ফলাফলে প্রতিটি ফিল্ডের ইউনিক ভ্যালুগুলো আলাদা অ্যারেতে পাওয়া যায়।