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

MongoDB में प्रभावी ढंग से घटना का प्रतिशत गिनें

यहां एक आसान MapReduce दिया गया है। वह वही करेगा जो आप चाहते हैं:

map = function() {
    for (var key in this.values){
        emit(key, {count:1, trues: (this.values[key] ? 1 : 0)});
    }
}

reduce = function(key, values){
    var out = values[0];
    for (var i=1; i < values.length; i++){
        out.count += values[i].count;
        out.trues += values[i].trues;
    }
    return out;
}

finalize = function(key, value){
    value.ratio = value.trues / value.count;
    return value;
}

db.runCommand({mapReduce:'collection',
               map:map,
               reduce:reduce,
               finalize:finalize,
               out:'counts'
               })

db.counts.findOne({_id:'alpha'})
{_id: 'alpha', value: {count: 100, trues: 52, ratio: 0.52}}

आप एक अपसर्ट भी कर सकते हैं। इस तरह जब आप अपने मुख्य संग्रह में सम्मिलित करते हैं जो आपको अपने डेटा में एक रीयल-टाइम दृश्य देगा:

for (var key in this.values){
    db.counts.update({_id:key},
                     {$inc:{count:1, trues: (this.values[key] ? 1 : 0)}},
                     true);
}

वास्तव में, आप इन विधियों को जोड़ भी सकते हैं। गणना संग्रह को पॉप्युलेट करने के लिए एक बार का MapReduce बैच कार्य करें और फिर इसे अप टू डेट रखने के लिए अप्सर्ट का उपयोग करें।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB में अद्यतन के साथ एकत्रीकरण

  2. SQL में स्ट्रिंग्स को कैसे संयोजित करें

  3. गोलंग का उपयोग करके मोंगोडब में $ लुकअप का उपयोग करके गिनती मूल्य कैसे प्राप्त करें?

  4. समस्या निवारण mongo नहीं मिला और php_mongo.dll एक win32 अनुप्रयोग त्रुटि नहीं है

  5. मोंगोडीबी $सप्ताह