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" } } }
প্রক্রিয়া:
- প্রথম
$match- ডকুমেন্ট লেভেলে প্রিলিমিনারি ফিল্টার (পারফরম্যান্সের জন্য) $unwind: "$details1"- প্রথম লেভেল অ্যারে ফ্ল্যাটেন$unwind: "$details1.details2"- দ্বিতীয় লেভেল অ্যারে ফ্ল্যাটেন- দ্বিতীয়
$match- ফ্ল্যাটেন হওয়া ডকুমেন্টে ফাইনাল ফিল্টার
এই প্যাটার্ন গভীর নেস্টেড ডেটা কোয়েরির জন্য স্ট্যান্ডার্ড পদ্ধতি।