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

MongoDB में सबडॉक्यूमेंट्स को सॉर्ट करने के लिए क्वेरी

MongoDB एग्रीगेशन के साथ सबडॉक्यूमेंट्स सॉर्ट करना

नेस्टेड ऐरे में सबडॉक्यूमेंट्स को उनकी गणना की गई संपत्ति के आधार पर सॉर्ट करें।

कलेक्शन बनाना

> db.demo136.insertOne(
    {
        "Name": "Chris",
        "Details": [
            {
                "Id": "101",
                "EmployeeName": "Mike",
                "EmployeeDetails": [
                    { "EmpId": 1001, "Salary": 1000 },
                    { "EmpId": 1002, "Salary": 2000 }
                ]
            },
            {
                "Id": "102",
                "EmployeeName": "David",
                "EmployeeDetails": [
                    { "EmpId": 1004, "Salary": 4000 },
                    { "EmpId": 1005, "Salary": 5000 }
                ]
            }
        ]
    }
);
{ "acknowledged": true, "insertedId": ObjectId("5e31b15cfdf09dd6d085399f") }

सभी डॉक्यूमेंट्स

> db.demo136.find();
{ "_id": ObjectId("5e31b15cfdf09dd6d085399f"), "Name": "Chris", "Details": [ { "Id": "101", "EmployeeName": "Mike", "EmployeeDetails": [ { "EmpId": 1001, "Salary": 1000 }, { "EmpId": 1002, "Salary": 2000 } ] }, { "Id": "102", "EmployeeName": "David", "EmployeeDetails": [ { "EmpId": 1004, "Salary": 4000 }, { "EmpId": 1005, "Salary": 5000 } ] } ] }

सबडॉक्यूमेंट्स सॉर्ट करने की एग्रीगेशन क्वेरी

> db.demo136.aggregate([
    { $unwind: "$Details" },
    {
        $project: {
            Name: 1,
            Details: 1,
            SalaryTotal: { $sum: "$Details.EmployeeDetails.Salary" }
        }
    },
    { $sort: { SalaryTotal: -1 } },
    {
        $group: {
            _id: "$_id",
            Name: { $first: "$Name" },
            Details: { $push: "$Details" }
        }
    }
]).pretty()

परिणाम

{ "_id": ObjectId("5e31b15cfdf09dd6d085399f"), "Name": "Chris", "Details": [ { "Id": "102", "EmployeeName": "David", "EmployeeDetails": [ { "EmpId": 1004, "Salary": 4000 }, { "EmpId": 1005, "Salary": 5000 } ] }, { "Id": "101", "EmployeeName": "Mike", "EmployeeDetails": [ { "EmpId": 1001, "Salary": 1000 }, { "EmpId": 1002, "Salary": 2000 } ] } ] }

व्याख्या

  1. $unwind: "$Details": Details ऐरे को अलग-अलग डॉक्यूमेंट्स में फैलाता है
  2. $project: SalaryTotal की गणना करता है ($sum: "$Details.EmployeeDetails.Salary" ऐरे के सभी वेतन जोड़ता है)
    • Mike: 1000 + 2000 = 3000
    • David: 4000 + 5000 = 9000
  3. $sort: {SalaryTotal: -1}: SalaryTotal के अवरोही क्रम में सॉर्ट करता है (David पहले)
  4. $group: मूल _id द्वारा पुनः ग्रुप करता है, सॉर्ट किए गए क्रम में Details ऐरे को पुनर्निर्मित करता है

परिणाम

Details ऐरे अब सॉर्ट है: David (कुल 9000) पहले, फिर Mike (कुल 3000)।

  1. - MongoDB में शब्दों द्वारा सॉर्ट करना

    MongoDB में $addFields और $cond का उपयोग करके कस्टम क्रम में सॉर्ट करना MongoDB में किसी फील्ड के मानों के आधार पर कस्टम क्रम (वर्णानुक्रम नहीं) में सॉर्ट करने के लिए $addFields के साथ $cond का उपयोग करके एक सॉर्ट की फील्ड बनाएं, फिर उस पर सॉर्ट करें। उदाहरण: संग्रह और दस्तावेज़ बनाना > db.demo6

  1. - MongoDB में सबडॉक्यूमेंट्स के ऐरे को कैसे क्वेरी करें?

    सबडॉक्यूमेंट्स के ऐरे को क्वेरी करने के लिए MongoDB में $unwind का उपयोग करें। नमूना डेटा बनाना (सबडॉक्यूमेंट्स ऐरे) db.demo499.insertOne({ details: [ { Name:MIT, Rank: 1, CountryName:US }, { Name:Stanford University, Rank: 2 }, { Name:University of California, Berkeley, Rank: 3 }

  1. - MongoDB में नेस्टेड सरणी को कैसे सॉर्ट करें?

    MongoDB में नेस्टेड सरणी को सॉर्ट करने के लिए, $sort का उपयोग करें। आइए दस्तावेज़ों के साथ एक संग्रह बनाएं: > db.demo505.insertOne( { details: [ { Name:Chris, Score:58 }, { Name:Bob, Score:45 }, { Name:John, Score:68 }, { Name:David, Score:46 } ] }); { ackn