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

MongoDB-তে $concatArrays ব্যবহার করা null মান থাকলেও ($ifNull ব্যবহার করে)

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 অর্ডার রক্ষা করে (ডুপ্লিকেট রেখে)।

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

  2. MongoDB-তে $slice ব্যবহার করে ফিল্ডের রিটার্নিং ভ্যালু লিমিট করা

  3. MongoDB ডকুমেন্ট থেকে নাল ভ্যালু বাদ দেওয়া

  4. MySQL-এ একই ভ্যালু থাকলে নির্দিষ্ট রো ফেচ করা