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

MongoDB-এ সাব-ডকুমেন্ট খুঁজে বের করা নির্দিষ্ট শর্ত অনুযায়ী ($filter, $match)


MongoDB এগ্রিগেশনে $match এবং $filter দিয়ে সাব-ডকুমেন্ট/অ্যারে এলিমেন্ট ফিল্টার করা

MongoDB-এ একটি ডকুমেন্টের ভেতরে অ্যারে-র ভেতরে সাব-ডকুমেন্ট থাকলে, নির্দিষ্ট শর্ত (Criteria) অনুযায়ী শুধু সেই সাব-ডকুমেন্টগুলো বের করতে এগ্রিগেশন পাইপলাইনে $match (ডকুমেন্ট লেভেল ফিল্টার) এবং $addFields + $filter (অ্যারে লেভেল ফিল্টার) ব্যবহার করা হয়।

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

> db.demo345.insertOne({
  "UserName": "Robert",
  "UserDetails": [
    { "isMarried": false, "CountryName": "US" },
    { "isMarried": true, "CountryName": "UK" },
    { "isMarried": false, "CountryName": "AUS" }
  ]
});
{ "acknowledged" : true, "insertedId" : ObjectId("5e5404fdf8647eb59e5620ac") }

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

> db.demo345.find();

আউটপুট:

{ "_id" : ObjectId("5e5404fdf8647eb59e5620ac"), "UserName" : "Robert", "UserDetails" : [ { "isMarried" : false, "CountryName" : "US" }, { "isMarried" : true, "CountryName" : "UK" }, { "isMarried" : false, "CountryName" : "AUS" } ] }

৩. এগ্রিগেশন কোয়েরি: UserName "Robert" এবং isMarried=true থাকা সাব-ডকুমেন্ট

> db.demo345.aggregate([
  { $match: { UserName: "Robert" } },
  { $addFields: {
      UserDetails: { $filter: {
        input: "$UserDetails",
        cond: { $eq: ["$$this.isMarried", true] }
      }}
  }}
])

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

  • $match - প্রথমে UserName "Robert" वाले ডকুমেন্টটি সিলেক্ট করে।
  • $addFields - UserDetails ফিল্ডকে ফিল্টার করা ভার্শন দিয়ে রিপ্লেস করে।
  • $filter - UserDetails অ্যারে-র প্রতিটি এলিমেন্ট ($$this) চেক করে isMarried: true থাকলে রাখে।

৪. ফলাফল

{ "_id" : ObjectId("5e5404fdf8647eb59e5620ac"), "UserName" : "Robert", "UserDetails" : [ { "isMarried" : true, "CountryName" : "UK" } ] }

শুধু UK (isMarried: true) বাকি থাকেছে। US এবং AUS (isMarried: false) বাদ পড়েছে। মূল ডকুমেন্ট ডাটাবেসে অপরিবর্তিত রয়েছে।


  1. MongoDB find() মেথড নিয়ে কাজ করা

  2. MongoDB-এ ফার্স্টনেম এবং লাস্টনেম কম্বাইন করে খুঁজে বের করা

  3. MongoDB-এ নির্দিষ্ট FirstName এবং LastName সম্বয় ডকুমেন্ট খোঁজা ($and + $in)

  4. MongoDB-তে ডকুমেন্ট এবং সাব-ডকুমেন্ট উদাহরণ ও আপডেট