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

प्रत्येक नाम के लिए लॉगलेवल की संख्या प्राप्त करें

{ "$sum": 1 } हटाएं और { "$sum": 0 } आपके if/else . में भाव सशर्त ब्लॉक, उन्हें मान 1 और 0 (क्रमशः प्रत्येक सशर्त ब्लॉक के लिए) के साथ प्रतिस्थापित करें।

अन्य $cond सिंटैक्स जो if/else . को छोड़ देता है ब्लॉक:

db.names.aggregate([
    {
        "$group": {
            "_id": "$name",
            "error": { 
               "$sum": { 
                   "$cond": [ { "$eq": [ "$loglevel",  "ERROR" ] }, 1, 0] 
               }
           },
           "warning":{
               "$sum": { 
                   "$cond": [ { "$eq": [ "$loglevel", "WARNING" ] }, 1, 0 ]
                }
           },
           "info": { 
               "$sum": { 
                   "$cond": [ { "$eq": [ "$loglevel",  "INFO" ] }, 1, 0 ]
               }
           }
        }
    }
])

या संभावित स्थितियों की एक सरणी को देखते हुए गतिशील रूप से पाइपलाइन बनाएं:

var statuses = ["ERROR", "WARNING", "INFO"],
    groupOperator = { "$group": { "_id": "$name" } };

statuses.forEach(function (status){ 
    groupOperator["$group"][status.toLowerCase()] = { 
       "$sum": { 
           "$cond": [ { "$eq": [ "$loglevel",  status ] }, 1, 0] 
       }
   }
});

db.names.aggregate([groupOperator]);

आउटपुट

/* 1 */
{
    "_id" : "t1",
    "error" : 2,
    "warning" : 3,
    "info" : 1
}

/* 2 */
{
    "_id" : "t2",
    "error" : 4,
    "warning" : 0,
    "info" : 1
}

/* 3 */
{
    "_id" : "t3",
    "error" : 0,
    "warning" : 0,
    "info" : 1
}


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. मोंगो लिंक क्वेरी में एक छेड़छाड़ करने के लिए तंत्र क्या है

  2. mongodb . में दस्तावेज़ों को जोड़ने के लिए सिंटैक्स

  3. MongooseError - ऑपरेशन `users.findOne ()` बफ़रिंग 10000ms के बाद समय समाप्त हो गया

  4. MongoError:संग्रह छोड़ने का प्रयास करते समय एनएस नहीं मिला

  5. उपयोगकर्ता अनुयायियों/अनुयायियों की सबसे कुशल पूछताछ के लिए एक अच्छी MongoDB दस्तावेज़ संरचना क्या है?