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

Mongoidní agregační metody na vložených dokumentech?

Ano, MapReduce by fungoval. Ke zpracování výsledku dotazu můžete také použít kurzory. Jako:

min = 99999999;
max = -99999999;
sum = 0;
count = 0
db.School.find({}).forEach(function(s) {
    if (s.first.events.first.cost < min)
        min = s.first.events.first.cost;
    if (s.first.events.first.cost > max)
        max = s.first.events.first.cost;
    sum += s.first.events.first.cost;
    ++count;
});

Nyní máte minimální a maximální a můžete vypočítat průměr a průměr ze součtu a počtu.

Mongodb nemá schopnost vypočítat agregační funkce přímo ve svém dotazovacím jazyce. Ve skutečnosti toto tvrzení není úplně pravdivé, protože existuje funkce count() pro sčítání počtu výsledků vrácených dotazem a existuje funkce group(). Ale skupinová funkce je hodně podobná MapReduce a nelze ji použít na sdílených databázích. Pokud máte zájem o skupinovou funkci, podívejte se na:http://www. mongodb.org/display/DOCS/Aggregation#Aggregation-Group




  1. Mongo Map Snížit poprvé

  2. Podporuje AWS DocumentDB spojení 3+ sbírek v jediném dotazu?

  3. Aktualizujte více dokumentů v kolekci pomocí přepínače případu

  4. MongoDB:Jak definovat schéma?