MongoDB एग्रीगेशन में ऐरे एलिमेंट्स सॉर्ट करना
MongoDB में एम्बेडेड ऐरे को सॉर्ट करने के लिए $unwind, $sort, और $group का संयोजन उपयोग किया जाता है।
सैंपल डेटा बनाना
> db.demo242.insertOne({
"details2": [
{"ShipingDate":new ISODate("2019-10-11"),"Price":1400},
{"ShipingDate":new ISODate("2019-10-01"),"Price":1600}
]
});
{ "acknowledged" : true, "insertedId" : ObjectId("5e4429229af932883c61ea44") }
दस्तावेज़ देखना
> db.demo242.find();
आउटपुट (अनसॉर्टेड ऐरे):
{ "_id" : ObjectId("5e4429229af932883c61ea44"), "details2" : [
{ "ShipingDate" : ISODate("2019-10-11T00:00:00Z"), "Price" : 1400 },
{ "ShipingDate" : ISODate("2019-10-01T00:00:00Z"), "Price" : 1600 }
] }
ऐरे को सॉर्ट करने की एग्रीगेशन पाइपलाइन
> db.demo242.aggregate([
{$unwind: "$details2"},
{$sort: {"details2.ShipingDate":1}},
{$group: {_id:"$_id", details2: {$push:"$details2.ShipingDate"}}}
]);
आउटपुट (सॉर्टेड डेट्स ऐरे):
{ "_id" : ObjectId("5e4429229af932883c61ea44"), "details2" : [
ISODate("2019-10-01T00:00:00Z"),
ISODate("2019-10-11T00:00:00Z")
] }
पूरे ऑब्जेक्ट्स को सॉर्ट करके रखना
यदि आप पूरे ऑब्जेक्ट्स को सॉर्टेड ऑर्डर में रखना चाहते हैं:
> db.demo242.aggregate([
{$unwind: "$details2"},
{$sort: {"details2.ShipingDate": 1}},
{$group: {_id: "$_id", details2: {$push: "$details2"}}}
]);
नोट
$unwindऐरे को डी-कंस्ट्रक्ट करता है$sortडी-कंस्ट्रक्टेड एलिमेंट्स को सॉर्ट करता है$group+$pushऐरे को पुनर्निर्मित करता है- MongoDB 3.6+ में
$sortArrayऑपरेटर अधिक सरल विकल्प है