MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Монгоидни агрегатни методи на вградени документи?

Да, MapReduce ще работи. Можете също да използвате курсори за обработка на резултат от заявка. Като:

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

Вече имате мин. и макс. и можете да изчислите средното и средното от сбора и броя.

Mongodb няма способността да изчислява агрегатните функции директно в своя език за заявки. Всъщност това твърдение не е напълно вярно, тъй като има функцията count() за отчитане на броя на резултатите, върнати от заявка, и има функцията group(). Но груповата функция много прилича на MapReduce и не може да се използва в шардирани бази данни. Ако се интересувате от груповата функция, вижте:http://www. mongodb.org/display/DOCS/Aggregation#Aggregation-Group




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongoose и множество бази данни в един проект node.js

  2. Сума във вложен документ MongoDB

  3. MongoDB текуща обща сума като агрегиране на предишни записи до появата на стойност

  4. MongooseError - Буферирането на операцията `users.findOne()` изтече след 10000 мс

  5. Вземете DateTime от колекция mongo с помощта на c# драйвер