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

MongoDB-এ অ্যাগ্রিগেশন দিয়ে অ্যারে থেকে একাধিক আইটেম রিট্রিভ করা ($unwind + $match + $group)

MongoDB-এ অ্যারে ফিল্ডের ভিতরে থেকে একাধিক নির্দিষ্ট আইটেম বের করতে অ্যাগ্রিগেশন পাইপলাইনে $unwind, $match, $group ব্যবহার করা হয়।

নমুনা ডেটা তৈরি (UserDetails অ্যারে)

> db.retrieveMultipleDemo.insertOne({
  "UserDetails": [
    {"_id": "101", "UserName": "John", "UserAge": 23},
    {"_id": "102", "UserName": "Carol", "UserAge": 21},
    {"_id": "103", "UserName": "David", "UserAge": 23},
    {"_id": "104", "UserName": "Sam", "UserAge": 25}
  ]
});
{ "acknowledged": true, "insertedId": ObjectId("5cd40c85edc6604c74817cf0") }

ডকুমেন্ট দেখুন

> db.retrieveMultipleDemo.find().pretty();
আউটপুট:
{
  "_id": ObjectId("5cd40c85edc6604c74817cf0"),
  "UserDetails": [
    {"_id": "101", "UserName": "John", "UserAge": 23},
    {"_id": "102", "UserName": "Carol", "UserAge": 21},
    {"_id": "103", "UserName": "David", "UserAge": 23},
    {"_id": "104", "UserName": "Sam", "UserAge": 25}
  ]
}

অ্যাগ্রিগেশন: id 101,103 এবং UserAge=23 মэтচ করা এলিমেন্টগুলো বের করা

> var myIds = ["101", "103"];
> db.retrieveMultipleDemo.aggregate([
  {$unwind: "$UserDetails"},
  {$match: {"UserDetails._id": {$in: myIds}, "UserDetails.UserAge": 23}},
  {$group: {"_id": "$_id", "UserDetails": {$push: "$UserDetails"}}},
  {$project: {"_id": 0, "UserDetails": 1}}
]);
আউটপুট (John এবং David):
{
  "UserDetails": [
    {"_id": "101", "UserName": "John", "UserAge": 23},
    {"_id": "103", "UserName": "David", "UserAge": 23}
  ]
}

পাইপলাইন ব্যাখ্যা:

  1. $unwind: অ্যারে ফ্ল্যাট করে প্রতিটি এলিমেন্টকে আলাদা ডকুমেন্ট বানায়।
  2. $match: নির্দিষ্ট _id এবং UserAge ফিল্টার।
  3. $group: মূল ডকুমেন্টের _id দিয়ে গ্রুপ করে ফিল্টার্ড এলিমেন্টগুলো $push দিয়ে আবার অ্যারে বানায়।
  4. $project: আউটপুট ফরম্যাট করুন।

  1. MongoDB-তে অ্যারে থেকে একাধিক মান বের করার কোয়ারি

  2. MongoDB-তে সাবডকুমেন্টের অ্যারে কুয়েরি

  3. MongoDB-এ _id দিয়ে গ্রুপ করে ডকুমেন্ট কাউন্ট করা

  4. MongoDB-এ অ্যারে অবজেক্টের মধ্যে একাধিক শর্ত ম্যাচ করা