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

Mongodb Có thể tổng hợp một đối tượng không?

Vì bạn có các giá trị trong một đối tượng thay vì một mảng, bạn sẽ cần sử dụng mapReduce.

// Emit the values as integers

var mapFunction = 
  function() {
    for (key in this.packets) {
      emit(null, parseInt(this.packets[key]));
    }
  }

// Reduce to a simple sum

var reduceFunction = 
  function(key, values) {
    return Array.sum(values);
  }

> db.collection.mapReduce(mapFunction, reduceFunction, {out: {inline:1}})
{
    "results" : [
        {
            "_id" : null,
            "value" : 2381
        }
    ],
    "ok" : 1,
}

Nếu có thể, bạn nên phát ra các giá trị dưới dạng một mảng kiểu số vì điều đó cung cấp cho bạn nhiều tùy chọn hơn (tức là tổng hợp) và (trừ khi tập dữ liệu lớn) có thể mang lại lợi ích về hiệu suất.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Điền các trường cụ thể trong $ lookup

  2. Mongoose save () không cập nhật giá trị trong một mảng trong tài liệu cơ sở dữ liệu

  3. MongoDB:Cách đổi tên trường bằng regex

  4. Làm cách nào để giải quyết Không thiết lập được ổ cắm trong quá trình khởi động khi tôi chạy máy chủ mongodb?

  5. đặt trường là trống cho đối tượng mongo bằng cách sử dụng mongoose