MongoDB-এ একাধিক ডকুমেন্টের অ্যারে ফিল্ডগুলো একসাথে মার্জ করে একটি অ্যারে তৈরি করতে অ্যাগ্রিগেশন পাইপলাইনে $group এবং $push ব্যবহার করা হয়।
নমুনা কালেকশন তৈরি
> db.demo64.insertOne({ "Subjects": ["MySQL", "MongoDB", "Java"] });
{ "acknowledged": true, "insertedId": ObjectId("5e28762bcfb11e5c34d89936") }
> db.demo64.insertOne({ "Subjects": ["Oracle", "Spring", "Python"] });
{ "acknowledged": true, "insertedId": ObjectId("5e28763fcfb11e5c34d89937") }
ডকুমেন্টগুলো দেখানো
> db.demo64.find();
আউটপুট:
{ "_id": ObjectId("5e28762bcfb11e5c34d89936"), "Subjects": [ "MySQL", "MongoDB", "Java" ] }
{ "_id": ObjectId("5e28763fcfb11e5c34d89937"), "Subjects": [ "Oracle", "Spring", "Python" ] }
অ্যারে মার্জ করার কোয়েরি
> db.demo64.aggregate([
{
$group: {
_id: null,
Subjects: { $push: "$Subjects" }
}
},
{ $project: { _id: 0 } }
]);
ফলাফল
{ "Subjects": [ [ "MySQL", "MongoDB", "Java" ], [ "Oracle", "Spring", "Python" ] ] }
ব্যাখ্যা:
$group: { _id: null }- সব ডকুমেন্টকে এক গ্রুপে নিয়ে আসে।$push: "$Subjects"- প্রতিটি ডকুমেন্টেরSubjectsঅ্যারে একটি এলিমেন্ট হিসেবে পুশ করে। ফলে দ্বিমাত্রিক অ্যারে তৈরি হয়।$project: { _id: 0 }-_idফিল্ড বাদ দেয়।
ফ্ল্যাট (একমাত্রিক) অ্যারে পেতে
যদি আপনি সব সাবজেক্ট একই অ্যারেতে চান (নেস্টেড না), তবে $unwind ব্যবহার করুন:
db.demo64.aggregate([
{ $unwind: "$Subjects" },
{ $group: { _id: null, Subjects: { $push: "$Subjects" } } },
{ $project: { _id: 0 } }
]);
ফলাফল: { "Subjects": [ "MySQL", "MongoDB", "Java", "Oracle", "Spring", "Python" ] }