MongoDB এগ্রিগেশনে $reduce, $concat, $project ব্যবহার করে অ্যারে এবং ফিল্ড কনক্যাটেনেট করা
MongoDB-এ একটি ডকুমেন্টের অ্যারে ফিল্ডের সব এলিমেন্ট এবং অন্য ফিল্ড(গুলো) একসাথে স্ট্রিং-এ জড়িয়ে একটি ফিল্ড বানাতে এগ্রিগেশন পাইপলাইনে $reduce (অ্যারে ফ্ল্যাটেন/কনক্যাট) এবং $concat (স্ট্রিং কনক্যাটেনেশন) ব্যবহার করা হয়।
১. কালেকশন ও নমুনা ডেটা তৈরি
> db.demo359.insertOne({
Name1: "Chris",
Name2: "David",
Subjects: ["MySQL","MongoDB","Java"]
});
{ "acknowledged" : true, "insertedId" : ObjectId("5e5694cdf8647eb59e5620d0") }
২. ডকুমেন্ট দেখানো
> db.demo359.find().pretty();
আউটপুট:
{ "_id" : ObjectId("5e5694cdf8647eb59e5620d0"), "Name1" : "Chris", "Name2" : "David", "Subjects" : [ "MySQL", "MongoDB", "Java" ] }
৩. দুই-স্টেজ এগ্রিগেশন কোয়েরি: অ্যারে কনক্যাট -> তারপর Name1 দিয়ে ফাইনাল কনক্যাট
> db.demo359.aggregate([
{ $project: {
values: { $reduce: {
input: '$Subjects',
initialValue: '',
in: { $concat: ['$$value', ' ', '$$this'] }
}},
Name1: 1
}},
{ $project: {
'ConcatResult': { '$concat': ['$Name1', '$values'] }
}}
])
স্টেজ ব্যাখ্যা:
- প্রথম $project:
$reduceদিয়ে Subjects অ্যারে-র এলিমেন্টগুলো স্পেস (" ") দিয়ে জড়িয়েvaluesফিল্ড বানায়:" MySQL MongoDB Java"। Name1 রাখা হয়েছে। - দ্বিতীয় $project:
$concat: ['$Name1', '$values']দিয়ে Name1 এবং values জড়িয়েConcatResultবানায়।
৪. ফলাফল
Name1 "Chris" এবং Subjects অ্যারে-র সব এলিমেন্ট স্পেস দিয়ে জড়িয়ে একক স্ট্রিং তৈরি হয়েছে।