MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

mongodb में एकाधिक कॉलम और एकाधिक मानों द्वारा समूह कैसे करें

एकत्रीकरण पाइपलाइन के भीतर, MongoDB संस्करण 3.6 और नए के लिए, आप $arrayToObject ऑपरेटर और एक $replaceRoot वांछित JSON आउटपुट प्राप्त करने के लिए पाइपलाइन। यह कॉल फ़ील्ड के अज्ञात मानों के लिए अच्छा काम करता है।

आपको निम्नलिखित समग्र पाइपलाइन चलाने की आवश्यकता होगी:

db.collection.aggregate([
    { "$group": {
        "_id": { 
            "name": "$name",
            "call": "$call"
        },
        "count": { "$sum": 1 }
    } },
    { "$group": {
        "_id": "$_id.name",
        "counts": {
            "$push": {
                "k": "$_id.call",
                "v": "$count"
            }
        },
        "nameCount": { "$sum": 1 }
    } },
    { "$replaceRoot": { 
        "newRoot": { 
            "$mergeObjects": [ 
                { "$arrayToObject": "$counts" }, 
                "$$ROOT" 
             ] 
        } 
    } },
    { "$project": { "counts": 0 } }
])

पिछले MongoDB संस्करणों के लिए, जिनके पास उपरोक्त ऑपरेटरों के लिए समर्थन नहीं है, $cond $group<में ऑपरेटर /कोड> ज्ञात कॉल . के आधार पर गणनाओं का मूल्यांकन करने का चरण मान, निम्न जैसा कुछ:

db.collection.aggregate([
    { "$group": {
        "_id": "$name",
        "nameCount": { "$sum": 1 },
        "Success Call": {
            "$sum": {
                "$cond": [ { "$eq": [ "$call",  "Success Call" ] }, 1, 0]
            }
        },
        "Repeat Call": {
            "$sum": {
                "$cond": [ { "$eq": [ "$call",  "Repeat Call" ] }, 1, 0]
            }
        },
        "Unsuccess Call": {
            "$sum": {
                "$cond": [ { "$eq": [ "$call",  "Unsuccess Call" ] }, 1, 0]
            }
        }
    } },
    { "$project": {
        "_id": 0, 
        "name": "$_id",
        "nameCount": 1,
        "Success Call":1,
        "Unsuccess Call":1,
        "Repeat Call":1               
    } }
])



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. नेवला में अद्यतन करते समय अशक्त क्षेत्र की अनुमति कैसे दें?

  2. नेवला में नेस्टेड वस्तु अद्यतन कर रहा है

  3. MongoDB 3.x . पर डिफ़ॉल्ट के रूप में MongoDB-CR प्रमाणीकरण को कॉन्फ़िगर करना

  4. $pull . का उपयोग करके मोंगोडब में एक सरणी के अंदर एक दस्तावेज़ को कैसे निकालें

  5. लोचदार खोज में एक खोज प्रतिक्रिया का परिणाम प्राप्त करना