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

MongoDB-এ একাধিক ফিল্ডে distinct করা (অ্যাগ্রিগেশন + $group + $addToSet)

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 মানে সব ডকুমেন্ট একই গ্রুপে। ফলাফলে প্রতিটি ফিল্ডের ইউনিক ভ্যালুগুলো আলাদা অ্যারেতে পাওয়া যায়।

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

  2. MongoDB-এ একাধিক ফিল্ডের অস্তিত্ব চেক করা

  3. MongoDB-এ শর্তানুসারে একাধিক সাব-ডকুমেন্ট থেকে ফিল্ড বের করা

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