নেস্টেড অ্যারেতে সাব-ডকুমেন্ট ফিল্টার করতে অগরিগেশনে $unwind এবং $match ব্যবহার করুন। একটি কালেকশন তৈরি করুন:
> db.demo662.insertOne({
"details":[
{ Name:"Chris", Marks:35 },
{ Name:"Bob", Marks:45 },
{ Name:"David", Marks:30 }
]
});
{ "acknowledged" : true, "insertedId" : ObjectId("5ea1b2be24113ea5458c7d04") }
find() দিয়ে ডকুমেন্ট দেখান:
> db.demo662.find();
আউটপুট:
Marks > 40শর্ত মেনে যাওয়া সাব-ডকুমেন্টগুলো ফিল্টার করার কোয়ারি:> db.demo662.aggregate({$unwind:"$details"},{$match:{"details.Marks":{$gt:40}}})আউটপুট:
ব্যাখ্যা:
$unwindঅ্যারেতে প্রতিটি সাব-ডকুমেন্টকে আলাদা ডকুমেন্ট বানায়। তারপর$matchশর্ত অনুযায়ী ফিল্টার করে। রেজাল্টেdetailsআর অ্যারে নয়, বরং সিংগল অবজেক্ট। মূল ডকুমেন্ট স্ট্রাকচার ফিরাতে চাইলে$groupএবং$pushব্যবহার করুন।