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

MongoDB में समूह और गिनती

यह बस लिखित रूप में काम नहीं करेगा। मुख्य समस्या यहाँ है:key: {"ResultSet.Results.state": true} . ResultSet.Results एक सरणी है। जब आप ResultSet.Results.state के बारे में पूछते हैं आप किसी प्रकार के for . का अर्थ लगा रहे हैं यहां लूप किया जाए। group कमांड बस इसके लिए सक्षम नहीं है।

इसके बजाय निम्नलिखित एम/आर आज़माएं:

map = function() {
  // Note that we emit once per result
  foreach(var i in ResultSet.Results) {
    key = this.ResultSet.Results[i];
    value = { count: 1, 
      quality: this.ResultSet.Results[i].quality,
      avg_quality: 0
    };

    emit(key, value);
  }
}

reduce = function(key, values) {
  // note that results has same fields as emitted value
  var results = { count: 0, quality: 0, avg_quality: 0 };
  foreach(var i in values){
    results.count += values[i].count;
    results.quality += values[i].quality;
    // ignore avg_quality, we don't use it
  }
  return results;
}

आपको एक finalize भी लिखना होगा औसत के लिए।

finalize = function(key, value) {
  if (value.count > 0)
    value.avg_quality = value.quality / value.count;

  return value;
}


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. मैं mongodb का उपयोग करके सरणी के अंदर elemMatch कैसे कर सकता हूं?

  2. mongodb . में तिथियों के अनुसार समूह

  3. MongoDB उन दस्तावेज़ों को ढूंढता है जहाँ सभी सरणी तत्व कुछ मान के बराबर होते हैं

  4. नेवला प्री-सेव हुक फायरिंग है, लेकिन अतिरिक्त फ़ील्ड को सहेजना नहीं है (मॉडल.अपडेट का उपयोग नहीं कर रहा है)

  5. तत्व के रेगेक्स सरणी के साथ MongoDB क्वेरी $