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

MongoDB-এ $project-এ $concatArrays ব্যবহার করে মাল্টি-অ্যারে ফিল্ড কনক্যাটেনেট করা


MongoDB-এ $reduce এবং $concatArrays দিয়ে দুই ডাইমেনশনাল অ্যারে ফ্ল্যাটেন (Flatten) করা

MongoDB-এ একটি ফিল্ডে অ্যারে-অফ-অ্যারে (Multi-dimensional Array) থাকলে, সেগুলো একসাথে মিলিয়ে একটি ফ্ল্যাট অ্যারে বানাতে $reduce এবং $concatArrays ব্যবহার করা হয়।

১. কালেকশন ও মাল্টি-অ্যারে ডেটা তৈরি

> db.demo338.insertOne({"Name":"Chris","Marks1":[ [56,67,45],[67,89,90,91] ]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e5299baf8647eb59e56209f") }

২. ডকুমেন্ট দেখানো

> db.demo338.find().pretty();

আউটপুট:

{
  "_id" : ObjectId("5e5299baf8647eb59e56209f"),
  "Name" : "Chris",
  "Marks1" : [
    [ 56, 67, 45 ],
    [ 67, 89, 90, 91 ]
  ]
}

৩. $reduce + $concatArrays দিয়ে ফ্ল্যাটেন করা

> db.demo338.aggregate([
  { "$project": {
      "Marks": {
        "$reduce": {
          "input": "$Marks1",
          "initialValue": [],
          "in": { "$concatArrays": ["$$this", "$$value"] }
        }
      }
  }}
])

ব্যাখ্যা:

  • $reduce - অ্যারে-র প্রতিটি এলিমেন্টে (সাব-অ্যারে) লুপ চলে।
  • initialValue: [] - শুরুতে খালি অ্যারে।
  • in: {$concatArrays: ["$$this", "$$value"]} - বর্তমান সাব-অ্যারে ($$this) এবং একমুতো ফলাফল ($$value) কনক্যাট করে।

৪. ফলাফল

{ "_id" : ObjectId("5e5299baf8647eb59e56209f"), "Marks" : [ 67, 89, 90, 91, 56, 67, 45 ] }

নোট: অর্ডার হলো $$this আগে, $$value পরে, তাই দ্বিতীয় সাব-অ্যারে ([67,89,90,91]) আগে আসে, তারপর প্রথমটি ([56,67,45])। ক্রম বদলাতে ["$$value", "$$this"] করুন।


  1. MongoDB Aggregation-এ নির্দিষ্ট ফিল্ড মান অনুযায়ী ডকুমেন্ট ফিল্টার করা

  2. MongoDB-তে find()-এ প্রজেকশন দিয়ে _id ফিল্ড হাইড করা

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

  4. MongoDB-এ বিদ্যমান ডকুমেন্টে নির্দিষ্ট ডেটা টাইপের ফিল্ড যোগ করা (লিস্ট, অবজেক্ট)