MongoDB অগ্রিগেশনে $concatArrays ব্যবহার করে একাধিক অ্যারে কনক্যাটেনেট করা যায়। যদি কোনো অ্যারে ফিল্ড `null` বা অনুপস্থিত থাকে, তবে $ifNull দিয়ে খালি অ্যারে `[]` দিয়ে হ্যান্ডেল করা হয়।
নমুনা ডেটা তৈরি করা
concatenateArraysDemo কালেকশনে তিনটি ডকুমেন্ট ইনসার্ট করি। দ্বিতীয় ডকুমেন্টে SecondSemesterSubjects অনুপস্থিত।
> db.concatenateArraysDemo.insertOne({"FirstSemesterSubjects": ["MongoDB","MySQL","Java"],"SecondSemesterSubjects":["C","C++"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd687707924bb85b3f4895c") }
> db.concatenateArraysDemo.insertOne({"FirstSemesterSubjects":["C#","Ruby","Python"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd687927924bb85b3f4895d") }
> db.concatenateArraysDemo.insertOne({"FirstSemesterSubjects":["HTML","CSS","Javascript"],"SecondSemesterSubjects":["CSS","Javascript"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd687bb7924bb85b3f4895e") }
সকল ডকুমেন্ট দেখানো
> db.concatenateArraysDemo.find().pretty();
আউটপুট:
{ "_id" : ObjectId("5cd687707924bb85b3f4895c"), "FirstSemesterSubjects" : [ "MongoDB", "MySQL", "Java" ], "SecondSemesterSubjects" : [ "C", "C++" ] }
{ "_id" : ObjectId("5cd687927924bb85b3f4895d"), "FirstSemesterSubjects" : [ "C#", "Ruby", "Python" ] }
{ "_id" : ObjectId("5cd687bb7924bb85b3f4895e"), "FirstSemesterSubjects" : [ "HTML", "CSS", "Javascript" ], "SecondSemesterSubjects" : [ "CSS", "Javascript" ] }
$ifNull দিয়ে null হ্যান্ডেল করে কনক্যাটেনেট করা
> db.concatenateArraysDemo.aggregate([
{
$project: {
ConcatenateArrays: {
'$concatArrays': [
{ $ifNull: ['$FirstSemesterSubjects', []] },
{ $ifNull: ['$SecondSemesterSubjects', []] }
]
}
}
}
]);
আউটপুট:
{ "_id" : ObjectId("5cd687707924bb85b3f4895c"), "ConcatenateArrays" : [ "MongoDB", "MySQL", "Java", "C", "C++" ] }
{ "_id" : ObjectId("5cd687927924bb85b3f4895d"), "ConcatenateArrays" : [ "C#", "Ruby", "Python" ] }
{ "_id" : ObjectId("5cd687bb7924bb85b3f4895e"), "ConcatenateArrays" : [ "HTML", "CSS", "Javascript", "CSS", "Javascript" ] }
ব্যাখ্যা: দ্বিতীয় ডকুমেন্টে SecondSemesterSubjects নেই, তাই $ifNull খালি অ্যারে দিয়ে এরর এড়িয়েছে। $concatArrays অর্ডার রক্ষা করে (ডুপ্লিকেট রেখে)।