MongoDB Aggregation-এ নেস্টেড অ্যারে সর্ট করা
MongoDB-এ ডকুমেন্টের ভেতরের অ্যারে সর্ট করার জন্য $unwind, $sort, এবং $group পাইপলাইন ব্যবহার করতে হয়। MongoDB 5.2+ এ নতুন $sortArray অপারেটর ব্যবহার করা আরও সহজ।
নমুনা ডেটা তৈরি
> db.demo242.insertOne({
"details2": [
{"ShipingDate": new ISODate("2019-10-11"), "Price": 1400},
{"ShipingDate": new ISODate("2019-10-01"), "Price": 1600}
]
});
সকল ডকুমেন্ট দেখানো
> db.demo242.find();
আউটপুট:
{ "_id" : ObjectId(...), "details2" : [
{ "ShipingDate" : ISODate("2019-10-11"), "Price" : 1400 },
{ "ShipingDate" : ISODate("2019-10-01"), "Price" : 1600 }
] }
প্রথামিক পদ্ধতি (MongoDB 5.2 এর আগে)
> db.demo242.aggregate([
{ $unwind: "$details2" },
{ $sort: { "details2.ShipingDate": 1 } },
{ $group: { _id: "$_id", details2: { $push: "$details2.ShipingDate" } } }
]);
আউটপুট (শুধু তারিখ):
{ "_id" : ObjectId(...), "details2" : [ ISODate("2019-10-01"), ISODate("2019-10-11") ] }
MongoDB 5.2+ এ $sortArray ব্যবহার (সরলতম)
> db.demo242.aggregate([
{ $project: {
details2: {
$sortArray: {
input: "$details2",
sortBy: { ShipingDate: 1 }
}
}
}}
]);
আউটপুট (পূর্ণ অবজেক্ট থাকে):
{ "_id" : ObjectId(...), "details2" : [
{ "ShipingDate" : ISODate("2019-10-01"), "Price" : 1600 },
{ "ShipingDate" : ISODate("2019-10-11"), "Price" : 1400 }
] }
তুলনা
| পদ্ধতি | MongoDB ভার্সন | জটিলতা | পূর্ণ অবজেক্ট রাখে? |
|---|---|---|---|
| $unwind + $sort + $group | সব ভার্সন | উচ্চ | না (শুধু নির্দিষ্ট ফিল্ড) |
| $sortArray | 5.2+ | নিম্ন | হ্যাঁ |
সুপারিশ: MongoDB 5.2 বা তার উপরে থাকলে $sortArray ব্যবহার করুন।