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

MongoDB-এ অ্যারে ভ্যালু এবং অন্যান্য ফিল্ড কনক্যাটেনেট (Concatenate) করা


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'] }
  }}
])

স্টেজ ব্যাখ্যা:

  1. প্রথম $project: $reduce দিয়ে Subjects অ্যারে-র এলিমেন্টগুলো স্পেস (" ") দিয়ে জড়িয়ে values ফিল্ড বানায়: " MySQL MongoDB Java"। Name1 রাখা হয়েছে।
  2. দ্বিতীয় $project: $concat: ['$Name1', '$values'] দিয়ে Name1 এবং values জড়িয়ে ConcatResult বানায়।

৪. ফলাফল

Name1 "Chris" এবং Subjects অ্যারে-র সব এলিমেন্ট স্পেস দিয়ে জড়িয়ে একক স্ট্রিং তৈরি হয়েছে।


  1. MongoDB-তে অ্যারেকে n অ্যাট্রিবিউটসহ ডকুমেন্টের ম্যাপে রূপান্তর করা

  2. MongoDB-তে সাবডকুমেন্টের অ্যারে কুয়েরি

  3. MongoDB-এ নির্দিষ্ট মানগুলোর সাথে ম্যাচ হওয়া ডকুমেন্ট খুঁজে বের করা

  4. MongoDB-এ এমবেডেড ডকুমেন্টের অ্যারে ফিল্টার করা (৩ লেভেল)