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

MongoDB Aggregation-এ বিভিন্ন ফিল্ডের মান একসাথে অ্যারের মধ্যে মিলানো (Coalesce)

MongoDB-এ $setUnion ব্যবহার করে একাধিক ফিল্ডের মান এক অ্যারে একত্রিত করা

$setUnion অপারেটর একাধিক সেট থেকে অনন্য (unique) মানগুলো একত্রিত করে একটি অ্যারে তৈরি করে। এখানে $group এবং $addToSet ব্যবহার করে প্রতিটি ফিল্ডের অনন্য মানগুলো সংগ্রহ করা হয়েছে।

নমুনা ডেটা তৈরি

> db.demo244.insertOne({"Value1":10,"Value2":20});
> db.demo244.insertOne({"Value1":20,"Value2":30});

সকল ডকুমেন্ট দেখানো

> db.demo244.find();

আউটপুট:

{ "_id" : ObjectId(...), "Value1" : 10, "Value2" : 20 }
{ "_id" : ObjectId(...), "Value1" : 20, "Value2" : 30 }

Aggregation Pipeline

> db.demo244.aggregate([
    {
        $group: {
            _id: null,
            v1: { $addToSet: "$Value1" },
            v2: { $addToSet: "$Value2" }
        }
    },
    {
        $project: {
            AllValues: { $setUnion: ["$v1", "$v2"] }
        }
    }
]);

আউটপুট:

{ "_id" : null, "AllValues" : [ 10, 20, 30 ] }

ধাপে ধাপে ব্যাখ্যা

  1. $group: সকল ডকুমেন্ট গ্রুপ করে (null _id মানে এক গ্রুপ), $addToSet দিয়ে প্রতিটি ফিল্ডের অনন্য মানগুলো সংগ্রহ করে
  2. $project: $setUnion দিয়ে দুটি অ্যারে (v1 এবং v2) মিলিয়ে ডুপ্লিকেট বাদ দিয়ে একটি অ্যারে তৈরি করে

বিকল্প পদ্ধতি: $concatArrays + $reduce

যদি ডুপ্লিকেট রাখতে চান:

> db.demo244.aggregate([
    { $project: { combined: { $concatArrays: ["$Value1", "$Value2"] } } },
    { $unwind: "$combined" },
    { $group: { _id: null, AllValues: { $push: "$combined" } } }
]);

নোট: উপরের উদাহরণে Value1 এবং Value2 সিংগেল ভ্যালু, অ্যারে নয়। আসল ব্যবহারে যদি এগুলো অ্যারে হয় তবে $reduce বা $map ব্যবহার করতে হতে পারে।

  1. MongoDB-এ অ্যারেতে নির্দিষ্ট মান রিপ্লেস করা (Positional $ ও $set)

  2. MongoDB অ্যাগ্রিগেশন: $match এবং $and দিয়ে একাধিক শর্ত মিলিয়ে ডকুমেন্ট বের করা

  3. MongoDB এгреগেশন: অন্য ডকুমেন্টের সমান ID গুলো গ্রুপ করা

  4. MySQL-এ GROUP_CONCAT ব্যবহার করে একাধিক রোকে এক ফিল্ডে জোড়া দেওয়া