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

MongoDB क्वेरी में ऐरे सॉर्ट करें और सभी फ़ील्ड्स प्रोजेक्ट करें

MongoDB एग्रीगेशन में ऐरे सॉर्टिंग और फुल प्रोजेक्शन

एम्बेडेड ऐरे को सॉर्ट करते समय मूल दस्तावेज़ संरचना को बनाए रखने के लिए $unwind, $sort, $group, और $project का संयोजन उपयोग करें।

सैंपल डेटा बनाना

> db.demo252.insertOne({
    "Values" : [
        { "v1" : 20, "v2" : 30 },
        { "v1" : 20, "v2" : 20 },
        { "v1" : 10, "v2" : 7 }
    ]
});
{ "acknowledged" : true, "insertedId" : ObjectId("5e46c2761627c0c63e7dba78") }

दस्तावेज़ देखना (अनसॉर्टेड)

> db.demo252.find();

आउटपुट:


एग्रीगेशन पाइपलाइन: v2 द्वारा सॉर्ट, फिर v1 द्वारा, सभी फ़ील्ड्स रखें

> db.demo252.aggregate([
    { "$unwind": "$Values" },
    { "$sort": { "Values.v2": 1, "Values.v1": 1 } },
    { "$group": {
        "_id": { "_id": "$_id" },
        "st": { "$push": "$Values" }
    }},
    { "$project": {
        "_id": "$_id._id",
        "Values": "$st"
    }}
]);

आउटपुट (सॉर्टेड ऐरे, सभी फ़ील्ड्स संरक्षित):


चरण-दर-चरण स्पष्टीकरण

  1. $unwind: Values ऐरे को फ्लैट करता है, प्रत्येक ऑब्जेक्ट के लिए एक दस्तावेज़
  2. $sort: पहले v2 द्वारा आरोही, फिर v1 द्वारा आरोही सॉर्ट करता है
  3. $group: मूल _id द्वारा पुनः ग्रुप करता है, सॉर्टेड ऑब्जेक्ट्स को st ऐरे में पुश करता है
  4. $project: आउटपुट संरचना को पुनर्गठित करता है (_id को फ्लैट करता है, Values को पुनर्स्थापित करता है)

सरल विकल्प: MongoDB 3.6+ में $sortArray

> db.demo252.aggregate([
    { $project: {
        Values: { $sortArray: { input: "$Values", sortBy: { v2: 1, v1: 1 } } }
    }}
]);

नोट

मूल उदाहरण में $group का _id ऑब्जेक्ट { "_id": "$_id" } अनावश्यक रूप से नेस्टेड है। सरल _id: "$_id" पर्याप्त होता।

  1. - MongoDB में सरणी फील्ड के साथ काम करके सभी से मिलान कैसे करें?

    MongoDB में सभी से मिलान करने के लिए $all का उपयोग करें। $all ऑपरेटर उन डॉक्यूमेंट्स को चुनता है जहां फील्ड का मान एक सरणी है जिसमें सभी निर्दिष्ट तत्व होते हैं। आइए एक कलेक्शन बनाते हैं: > db.demo695.insertOne({ListOfValues:[100,200,500,800]}); { acknowledged : true, insertedId : ObjectId(5ea6d

  1. - MongoDB में एम्बेडेड दस्तावेजों के ऐरे को क्वेरी करें और नया जोड़ें

    इसके लिए, अपडेट के साथ $push का उपयोग करें। आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं: > db.demo573.insertOne( { _id: 101, SearchInformation: [ { Site: Facebook.com, NumberOfHits: 100 }, { Site: Twitter.com, NumberOfHits: 300 } ] } ); { ac

  1. - MongoDB क्वेरी: _id को छोड़कर सभी फील्ड्स के मान प्रदर्शित करें

    आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं: > db.demo590.insert([ { Name: Chris, Age: 21 }, { Name: Bob, Age: 20 }, { Name: Sam, Age: 19 } ]); BulkWriteResult({ writeErrors: [], writeConcernErrors: [], nInserted: 3, nUpserted: 0, nMatched: 0, nModified: 0, nRemoved: 0, upserted: [] }