MongoDB-তে নেস্টেড অ্যারে সর্ট করতে অগরিগেশনে $unwind, $sort এবং $group ব্যবহার করুন। একটি কালেকশন তৈরি করুন:
> db.demo505.insertOne({
"details": [
{ Name:"Chris", "Score":58 },
{ Name:"Bob", "Score":45 },
{ Name:"John", "Score":68 },
{ Name:"David", "Score":46 }
]
});
{ "acknowledged" : true, "insertedId" : ObjectId("5e882a6b987b6e0e9d18f574") }
find() দিয়ে ডকুমেন্ট দেখান:
> db.demo505.find();
আউটপুট (অসর্টেড):
{ "_id" : ObjectId("5e882a6b987b6e0e9d18f574"), "details" : [ { "Name" : "Chris", "Score" : 58 }, { "Name" : "Bob", "Score" : 45 }, { "Name" : "John", "Score" : 68 }, { "Name" : "David", "Score" : 46 } ] }
নেস্টেড অ্যারে এসেন্ডিং অর্ডারে সর্ট করার অগরিগেশন কোয়েরি:
> db.demo505.aggregate([
{ $unwind: "$details" },
{ $sort: { "details.Score": 1 } },
{ $group: { _id: "$_id", details: { $push: "$details" } } }
]);
সর্টেড আউটপুট:
{ "_id" : ObjectId("5e882a6b987b6e0e9d18f574"), "details" : [ { "Name" : "Bob", "Score" : 45 }, { "Name" : "David", "Score" : 46 }, { "Name" : "Chris", "Score" : 58 }, { "Name" : "John", "Score" : 68 } ] }
ব্যাখ্যা: $unwind অ্যারেটি ফ্ল্যাট করে, $sort স্কোর অনুযায়ী সর্ট করে, এবং $group সাথে $push আবার অ্যারে রিকনস্ট্রাক্ট করে। ডেসেন্ডিং সর্টের জন্য 1-র পরিবর্তে -1 ব্যবহার করুন।