Có, MapReduce sẽ hoạt động. Bạn cũng có thể sử dụng con trỏ để xử lý kết quả truy vấn. Như:
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;
});
Bây giờ bạn có giá trị tối thiểu và tối đa và có thể tính giá trị trung bình và trung bình từ tổng và đếm.
Mongodb không có khả năng tính trực tiếp các hàm tổng hợp trong ngôn ngữ truy vấn của nó. Trên thực tế, câu lệnh đó không hoàn toàn đúng, vì có hàm count () để đếm số lượng kết quả được trả về bởi một truy vấn và có hàm group (). Nhưng hàm nhóm rất giống với một MapReduce và không thể được sử dụng trên cơ sở dữ liệu phân đoạn. Nếu bạn quan tâm đến chức năng nhóm, hãy xem: http:// www. mongodb.org/display/DOCS/Aggregation#Aggregation-Group