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

MongoDB GroupBy से स्टेटस सेट करें

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

इसके लिए MongoDB में aggregate() का उपयोग कर सकते हैं।

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

> db.demo149.insertOne({"Status":40});
{ "acknowledged": true, "insertedId": ObjectId("5e350386fdf09dd6d08539c4") }
> db.demo149.insertOne({"Status":40});
{ "acknowledged": true, "insertedId": ObjectId("5e350388fdf09dd6d08539c5") }
> db.demo149.insertOne({"Status":50});
{ "acknowledged": true, "insertedId": ObjectId("5e35038afdf09dd6d08539c6") }

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

> db.demo149.find();

ग्रुप बाय एग्रीगेशन क्वेरी

> db.demo149.aggregate([
    {
        "$group": {
            "_id": null,
            "done": {
                "$push": {
                    "$cond": [
                        { "$eq": ["$Status", 40] },
                        { "_id": "$_id", "Status": "$Status" },
                        false
                    ]
                }
            },
            "notdone": {
                "$push": {
                    "$cond": [
                        { "$eq": ["$Status", 50] },
                        { "_id": "$_id", "Status": "$Status" },
                        false
                    ]
                }
            }
        }
    },
    {
        "$project": {
            "_id": 0,
            "done": { "$setDifference": ["$done", [false]] },
            "notdone": { "$setDifference": ["$notdone", [false]] }
        }
    }
]);

परिणाम


व्याख्या

  1. $group (_id: null): सभी डॉक्यूमेंट्स को एक ग्रुप में रखता है
  2. $push + $cond: सशर्त रूप से ऐरे में ऑब्जेक्ट्स जोड़ता है
    • done: Status 40 वाले डॉक्यूमेंट्स जोड़ता है, अन्यथा false
    • notdone: Status 50 वाले डॉक्यूमेंट्स जोड़ता है, अन्यथा false
  3. $project + $setDifference: false मानों को ऐरे से हटाता है
    • $setDifference: ["$done", [false]] - done ऐरे से false हटाता है

सरल विकल्प (MongoDB 3.4+)

या बस दो अलग क्वेरी चलाएं यदि प्रदर्शन महत्वपूर्ण है।

  1. - MongoDB में नया यूजर बनाएं और रोल सेट करें

    इसके लिए, userAdminAnyDatabase का उपयोग करें क्योंकि यह एडमिन की तरह सभी परमिशन देता है। सिंटैक्स निम्न है: use admin db.createUser( { user: yourUserName, pwd: yourPassword, roles: [ { role: yourRoleName, db: yourDatabaseName } ] } ) आइए उपरोक्त सिंटैक्स को लागू करके

  1. - MongoDB में नेस्टेड ऐरे के लिए फ़िल्टरिंग कंडीशन सेट करना

    नेस्टेड ऐरे को फ़िल्टर करने के लिए $filter, $cond, $map और $anyElementTrue का संयोजन उपयोग करें। डेमो डेटा db.demo725.insertOne({ details: { userMessages: [ { Messages: [ { Message: Hello }, { Message: How }, { Message: are } ] }, { Messages: [ { Message: Good },

  1. Microsoft Teams में स्टेटस मैसेज कैसे सेट करें: त्वरित और आसान चरण Microsoft Teams में स्टेटस मैसेज कैसे सेट करें: त्वरित और आसान चरण

    Microsoft Teams स्टेटस मैसेज सेट करना आपके सहकर्मियों को सूचित रखने का एक अच्छा तरीका है कि आप कहां हैं और आप क्या कर रहे हैं। नियमित रूप से अपने स्टेटस मैसेज को अपडेट करने से अंतहीन आप क्या कर रहे हैं संदेशों से बचा जा सकता है, साथ ही रचनात्मक होने का अवसर भी मिलता है यदि आप अपने डेस्क से दूर जा रह