MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Metodi aggregati mongoidi su documenti incorporati?

Sì, MapReduce funzionerebbe. Puoi anche usare i cursori per elaborare il risultato di una query. Come:

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

Ora hai il minimo e il massimo e puoi calcolare la media e la media dalla somma e dal conteggio.

Mongodb non ha la capacità di calcolare direttamente le funzioni aggregate nel suo linguaggio di query. In realtà, tale affermazione non è del tutto vera, poiché esiste la funzione count() per contare il numero di risultati restituiti da una query e c'è la funzione group(). Ma la funzione di gruppo è molto simile a MapReduce e non può essere utilizzata su database partizionati. Se sei interessato alla funzione di gruppo, consulta:http://www. mongodb.org/display/DOCS/Aggregation#Aggregation-Group