MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Nhóm và đếm trong MongoDB

Điều này chỉ đơn giản là sẽ không hoạt động như đã viết. Vấn đề quan trọng là ở đây:key: {"ResultSet.Results.state": true} . ResultSet.Results là một mảng. Khi bạn yêu cầu ResultSet.Results.state bạn đang ám chỉ một số loại for vòng lặp được thực hiện ở đây. Nhóm group chỉ đơn giản là lệnh không có khả năng này.

Thay vào đó, hãy thử M / R sau:

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;
}

Bạn cũng sẽ phải viết một finalize cho mức trung bình.

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. Truy vấn có nguồn gốc không hoạt động với DBRef

  2. Cách máy chủ chính ngừng hoạt động sẽ được xử lý tự động trong bản sao mongodb

  3. Lưu trữ một số tệp nhỏ (dưới 1MB) bằng MongoDB trong NodeJS KHÔNG CÓ GridFS

  4. Làm cách nào để có được trạng thái kết nối trong trình điều khiển C # MongoDB v2.0?

  5. Sự khác biệt giữa findOneAndUpdate và findOneAndReplace là gì?