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

मोंगो एकत्रीकरण:गिनती के लिए आपत्ति करने के लिए $ समूह और $ प्रोजेक्ट सरणी

MongoDb 3.4 और नए के साथ, आप $arrayToObject के उपयोग का लाभ उठा सकते हैं वांछित परिणाम प्राप्त करने के लिए ऑपरेटर। आपको निम्नलिखित समग्र पाइपलाइन चलाने की आवश्यकता होगी:

db.collection.aggregate([
    { "$group": {
        "_id": {  
            "date": "$install_date",  
            "platform": { "$toLower": "$platform" }
        },
        "count": { "$sum": 1 }
    } },
    { "$group": {
        "_id": "$_id.date",
        "counts": {
            "$push": {
                "k": "$_id.platform",
                "v": "$count"
            }
        }
    } },
    {  "$addFields": {
        "install_date": "$_id", 
        "platform": { "$arrayToObject": "$counts" }
    }  },
    { "$project": { "counts": 0, "_id": 0 } } 
])

पुराने संस्करणों के लिए, $cond . का लाभ उठाएं $group . में ऑपरेटर प्लेटफ़ॉर्म फ़ील्ड मान के आधार पर गणनाओं का मूल्यांकन करने के लिए पाइपलाइन चरण, निम्न जैसा कुछ:

db.collection.aggregate([    
    { "$group": { 
        "_id": "$install_date",             
        "android_count": {
            "$sum": {
                "$cond": [ { "$eq": [ "$platform", "android" ] }, 1, 0 ]
            }
        },
        "ios_count": {
            "$sum": {
                "$cond": [ { "$eq": [ "$platform", "ios" ] }, 1, 0 ]
            }
        },
        "facebook_count": {
            "$sum": {
                "$cond": [ { "$eq": [ "$platform", "facebook" ] }, 1, 0 ]
            }
        },
        "kindle_count": {
            "$sum": {
                "$cond": [ { "$eq": [ "$platform", "kindle" ] }, 1, 0 ]
            }
        } 
    } },
    { "$project": {
        "_id": 0, "install_date": "$_id",            
        "platform": {
            "android": "$android_count",
            "ios": "$ios_count",
            "facebook": "$facebook_count",
            "kindle": "$kindle_count"
        }
    } }
])

उपरोक्त में, $cond तार्किक स्थिति लेता है क्योंकि यह पहला तर्क (यदि) है और फिर दूसरा तर्क देता है जहां मूल्यांकन सत्य है (तब) या तीसरा तर्क जहां झूठा (अन्य)। यह $sum . को फीड करने के लिए 1 और 0 में सही/गलत रिटर्न देता है क्रमश।

तो उदाहरण के लिए, यदि { "$eq": [ "$platform", "facebook" ] }, सत्य है तो व्यंजक { $sum: 1 } . का मूल्यांकन करेगा अन्यथा यह { $sum: 0 } . होगा




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDb का $set इसके जावा ड्राइवर के बराबर है

  2. MongoDB में अधिकतम कितनी शार्क हो सकती हैं?

  3. MongoDB को संभालना नोड से डिस्कनेक्ट/पुनः कनेक्ट होता है

  4. MongoDB संग्रह से दस्तावेज़ों का एक यादृच्छिक नमूना वापस करने के 3 तरीके

  5. डेटाबेस अपडेट और सुरक्षा पैच को आसानी से कैसे प्रबंधित करें