Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MongoDB

MongoDB में सब-अरे डॉक्यूमेंट के लिए $sort कैसे काम करें?

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" } ] }

चरण-दर-चरण व्याख्या

  1. $unwind: सरणी को अलग-अलग दस्तावेज़ों में फैलाता है।
  2. $sort: वांछित फील्ड (StudentDetails.Name) द्वारा फ़्लैट दस्तावेज़ों को सॉर्ट करता है।
  3. $group: सरणी को पुनर्निर्मित करता है, केवल आवश्यक फील्ड्स (Name) को वापस डालता है।
  4. $project: आउटपुट आकार देता है (यहां _id छुपाता है)।

नोट

  • यह दृष्टिकोण शीर्ष-स्तरीय दस्तावेज़ क्रम को नहीं बदलता; यह केवल पाइपलाइन आउटपुट के लिए एक सॉर्ट की गई सरणी लौटाता है।
  • मूल दस्तावेज़ में सरणी को स्थायी रूप से सॉर्ट करने के लिए, एप्लिकेशन कोड में सॉर्ट करने के बाद $set के साथ अपडेट करें।
  • MongoDB 5.2+ में, सरणी तत्वों को इन-प्लेस सॉर्ट करने के लिए $sortArray का उपयोग करें।
  1. - MongoDB में एम्बेडेड डॉक्यूमेंट की सरणी पर फ़िल्टर क्वेरी कैसे करें?

    इसके लिए MongoDB में aggregate() का उपयोग करें। आइए 3 स्तरों के नेस्टेड डॉक्यूमेंट्स के साथ एक कलेक्शन बनाते हैं: > db.demo736.insertOne( { _id: 101, details1: [ { details2: [ { details3: { Name: John } } ] } ] } ); { acknowledged : true, insertedId : 101 } > db.demo736.insertOne( { _id: 102,

  1. - MongoDB में सरणी में डुप्लिकेट की जांच कैसे करें?

    सरणी में डुप्लिकेट जांचने के लिए MongoDB में aggregate() का उपयोग करें। आइए एक कलेक्शन बनाते हैं: > db.demo756.insertOne({SubjectName:[MySQL,MongoDB,Java]}); { acknowledged : true, insertedId : ObjectId(5eb01e0d5637cd592b2a4add) } > db.demo756.insertOne({SubjectName:[MongoDB,MySQL,MongoDB,C,C

  1. - MongoDB में विशिष्ट नेस्टेड डॉक्यूमेंट्स के लिए ऑब्जेक्ट्स की सरणी पर क्वेरी कैसे करें?

    ऑब्जेक्ट्स की सरणी के लिए नेस्टेड डॉक्यूमेंट्स पर क्वेरी करने के लिए find() का उपयोग करें। आइए एक कलेक्शन बनाते हैं: > db.demo763.insertOne( { _id:1, CountryName:US, studentInformation: [ { StudentName:Chris }, { StudentName:David, StudentAge:22 } ] } ); { acknowledged : true, insertedId : 1 } f