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

MongoDB-এ অ্যারে ফিল্ডের নির্দিষ্ট এলিমেন্ট প্রজেক্ট করা ($filter, $project)


MongoDB এগ্রিগেশনে $project এবং $filter ব্যবহার করে অ্যারে-র শর্তানুসারী এলিমেন্ট প্রজেক্ট করা

MongoDB-এ একটি ডকুমেন্টের অ্যারে ফিল্ড থেকে নির্দিষ্ট শর্ত পূরণকারী এলিমেন্টগুলো মাত্র আউটপুটে দেখাতে (প্রজেক্ট করতে) এগ্রিগেশন পাইপলাইনে $project এবং $filter কম্বাইন করে ব্যবহার করা হয়।

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

> db.demo355.insertOne({"id":101,"details":[{"Name":"Chris",isMarried:1},{"Name":"David",isMarried:0},{"Name":"Mike",isMarried:1}]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e568928f8647eb59e5620c5") }

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

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

আউটপুট:

{ "_id" : ObjectId("5e568928f8647eb59e5620c5"), "id" : 101, "details" : [ { "Name" : "Chris", "isMarried" : 1 }, { "Name" : "David", "isMarried" : 0 }, { "Name" : "Mike", "isMarried" : 1 } ] }

৩. এগ্রিগেশন কোয়েরি: শুধু isMarried=1 (true) वाले এলিমেন্টগুলো প্রজেক্ট করা

> db.demo355.aggregate([
  { $project: {
      details: { $filter: {
        input: "$details",
        as: "out",
        cond: { $eq: ["$$out.isMarried", 1] }
      }}
  }}
])

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

  • $project - আউটপুট স্ট্রাকচার ডেফাইন করে।
  • $filter - input: "$details" অ্যারে-র প্রতিটি এলিমেন্ট $$out ভেরিয়েবলে নেয়।
  • cond: {$eq: ["$$out.isMarried", 1]} - isMarried ফিল্ড ১ (true) হলে রাখে, ০ (false) হলে বাদ দেয়।

৪. ফলাফল

David (isMarried: 0) বাদ পড়েছে। Chris এবং Mike (isMarried: 1) বাকি থাকেছে। মূল ডকুমেন্ট ডাটাবেসে অপরিবর্তিত।


  1. MongoDB-এ অ্যারে আইটেম গণনা করার পদ্ধতি

  2. MongoDB-এ অ্যারে টাইপ ফিল্ডের মান বাদ দেওয়া (এক্সক্লুড)

  3. MongoDB-এ অ্যারে এলিমেন্টস সহ নির্দিষ্ট ডকুমেন্ট ফেচ করা

  4. MongoDB ডকুমেন্টের নির্দিষ্ট ফিল্ড থেকে অ্যারে এলিমেন্ট কাউন্ট করা