MongoDB में सब-अरे (नेस्टेड सरणी) के अंदर दस्तावेज़ों को सॉर्ट करने के लिए, एग्रीगेशन पाइपलाइन का उपयोग करें: $unwind → $sort → $group → $project।
उदाहरण: छात्र विवरण के साथ दस्तावेज़
> db.demo23.insertOne({
"StudentDetails" : [
{"Name" : "David", "Age" : 23},
{"Name" : "Adam", "Age" : 24}
]
});
{ "acknowledged" : true, "insertedId" : ObjectId("5e14c3eb22d07d3b95082e71") }
दस्तावेज़ देखना
> db.demo23.find().pretty()
आउटपुट: मूल क्रम में दो छात्रों वाली सरणी।
एग्रीगेशन पाइपलाइन: नाम द्वारा सब-सरणी सॉर्ट करें
> db.demo23.aggregate([
{ "$unwind" : "$StudentDetails" },
{ "$sort" : { "StudentDetails.Name" : 1 }},
{ "$group" : {
"StudentDetails" : { "$push" : { "Name" : "$StudentDetails.Name" }},
"_id" : null
}},
{ "$project" : { "_id" : 0, "StudentDetails" : 1 }}
]);
परिणाम
{ "StudentDetails" : [ { "Name" : "Adam" }, { "Name" : "David" } ] }
चरण-दर-चरण व्याख्या
- $unwind: सरणी को अलग-अलग दस्तावेज़ों में फैलाता है।
- $sort: वांछित फील्ड (
StudentDetails.Name) द्वारा फ़्लैट दस्तावेज़ों को सॉर्ट करता है। - $group: सरणी को पुनर्निर्मित करता है, केवल आवश्यक फील्ड्स (
Name) को वापस डालता है। - $project: आउटपुट आकार देता है (यहां
_idछुपाता है)।
नोट
- यह दृष्टिकोण शीर्ष-स्तरीय दस्तावेज़ क्रम को नहीं बदलता; यह केवल पाइपलाइन आउटपुट के लिए एक सॉर्ट की गई सरणी लौटाता है।
- मूल दस्तावेज़ में सरणी को स्थायी रूप से सॉर्ट करने के लिए, एप्लिकेशन कोड में सॉर्ट करने के बाद
$setके साथ अपडेट करें। - MongoDB 5.2+ में, सरणी तत्वों को इन-प्लेस सॉर्ट करने के लिए
$sortArrayका उपयोग करें।