MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Mongodb Възможно ли е да се агрегира обект?

Тъй като имате стойностите в обект вместо в масив, ще трябва да използвате 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,
}

Ако изобщо е възможно, вместо това трябва да излъчвате стойностите като масив от числов тип, тъй като това ви дава повече опции (т.е. агрегиране) и (освен ако наборът от данни не е голям) вероятно подобрява производителността.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как се премахва модел от mongoose?

  2. MongoDB транзакции?

  3. mongodb TTL не работи

  4. Уникални документи, използващи множество стойности в Mongoose Schema

  5. В Flask преобразувайте формата POST обект в представяне, подходящо за mongodb