MongoDB-তে নেস্টেড অ্যারে ভিতরের ফিল্ড অনুযায়ী মূল ডকুমেন্ট বা সাব-ডকুমেন্ট সর্ট করতে $unwind দিয়ে অ্যারে ফ্ল্যাটেন করে তারপর $sort ব্যবহার করা হয়।
উদাহরণ: স্টুডেন্ট ডিটেইলস অ্যারে সহ ডকুমেন্ট
> db.demo577.insertOne({
"student": {
"details": [
{ Name: "Chris", Score: 45 },
{ Name: "Bob", Score: 33 },
{ Name: "David", Score: 48 }
]
}
});
অ্যাগ্রিগেশন: স্কোর ডিসেন্ডিং অর্ডারে সর্ট
> db.demo577.aggregate([
{ $unwind: "$student" },
{ $unwind: "$student.details" },
{ $sort: { "student.details.Score": -1 } }
]);
আউটপুট:
{ "student" : { "details" : { "Name" : "David", "Score" : 48 } } }
{ "student" : { "details" : { "Name" : "Chris", "Score" : 45 } } }
{ "student" : { "details" : { "Name" : "Bob", "Score" : 33 } } }
ব্যাখ্যা:
$unwind: "$student"- student অবজেক্টকে আলাদা ডকুমেন্ট বানায় (এখানে ১টি, তাই প্রায় একই)$unwind: "$student.details"- details অ্যারে ভাঙে, প্রতিটি স্টুডেন্ট আলাদা ডকুমেন্ট$sort- Score ডিসেন্ডিং (-1) অনুযায়ী সর্ট
মূল ডকুমেন্ট স্ট্রাকচার বজায় রাখতে চাইলে শেষে $group দিয়ে আবার রিকনস্ট্রাক্ট করতে হয়।