Tak, MapReduce zadziała. Możesz także użyć kursorów do przetworzenia wyniku zapytania. Na przykład:
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;
});
Masz teraz minimum i maksimum i możesz obliczyć średnią i średnią z sumy i liczby.
Mongodb nie ma możliwości bezpośredniego obliczania funkcji agregujących w swoim języku zapytań. Właściwie to stwierdzenie nie jest całkowicie prawdziwe, ponieważ istnieje funkcja count() do zliczania wyników zwróconych przez zapytanie i funkcja group(). Ale funkcja grupy jest bardzo podobna do MapReduce i nie można jej używać w bazach danych podzielonych na fragmenty. Jeśli interesuje Cię funkcja grupowania, zobacz:http://www. mongodb.org/display/DOCS/Aggregation#Aggregation-Group