sql >> Databáze >  >> NoSQL >> MongoDB

Mongodb Je možné agregovat objekt?

Protože máte hodnoty v objektu místo v poli, budete muset použít 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,
}

Pokud je to jen trochu možné, měli byste místo toho vysílat hodnoty jako pole číselného typu, protože to vám dává více možností (tj. agregaci) a (pokud není soubor dat velký) pravděpodobně výhody výkonu.



  1. Jak vnořit seznam do struktury v Redis, abyste snížili nejvyšší úroveň?

  2. mongodb groupby pomalý i po přidání indexu

  3. Pokud je redis již součástí zásobníku, proč se Memcached stále používá spolu s Redis?

  4. SailsJS:Získejte Resone Ajax-Form of SailsJS v předložené funkci