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

MongoDB-তে সাব-ডকুমেন্ট দিয়ে সাব-ডকুমেন্ট ফিল্টার করা (aggregate + $unwind)

MongoDB-তে গভীর নেস্টেড স্ট্রাকচার (সাব-ডকুমেন্টের ভিতর আবার সাব-ডকুমেন্ট) থেকে নির্দিষ্ট শর্ত পূরণকারী ডেটা বের করতে একাধিক $unwind এবং $match ব্যবহার করা হয়।

উদাহরণ: দ্বি-স্তর নেস্টেড স্ট্রাকচার

> db.demo583.insert([{
    "details1": [
        { "details2": [ { "isMarried": true, "Name": "Chris" }, { "isMarried": true, "Name": "Bob" } ] },
        { "details2": [ { "isMarried": false, "Name": "Chris" }, { "isMarried": true, "Name": "Mike" } ] }
    ]
}]);

অ্যাগ্রিগেশন পাইপলাইন: isMarried=true এবং Name="Chris" ফিল্টার

> var q = [
    { $match: { "details1.details2.isMarried": true, "details1.details2.Name": "Chris" } },
    { $unwind: "$details1" },
    { $unwind: "$details1.details2" },
    { $match: { "details1.details2.isMarried": true, "details1.details2.Name": "Chris" } }
];
> db.demo583.aggregate(q).pretty();

আউটপুট:

{ "_id" : ..., "details1" : { "details2" : { "isMarried" : true, "Name" : "Chris" } } }

প্রক্রিয়া:

  1. প্রথম $match - ডকুমেন্ট লেভেলে প্রিলিমিনারি ফিল্টার (পারফরম্যান্সের জন্য)
  2. $unwind: "$details1" - প্রথম লেভেল অ্যারে ফ্ল্যাটেন
  3. $unwind: "$details1.details2" - দ্বিতীয় লেভেল অ্যারে ফ্ল্যাটেন
  4. দ্বিতীয় $match - ফ্ল্যাটেন হওয়া ডকুমেন্টে ফাইনাল ফিল্টার

এই প্যাটার্ন গভীর নেস্টেড ডেটা কোয়েরির জন্য স্ট্যান্ডার্ড পদ্ধতি।

  1. MongoDB-এ অগরিগেশন এবং $unwind ব্যবহার করে সাব-ডকুমেন্ট ফিল্টার করা

  2. MongoDB-তে এমবেডেড ডকুমেন্ট কোয়েরি করা (aggregate + $unwind)

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

  4. MongoDB-এ ডকুমেন্ট থেকে নির্দিষ্ট ভ্যালু ফিল্টার করা ($filter)