MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Métodos agregados Mongoid em documentos incorporados?


Sim, MapReduce funcionaria. Você também pode usar cursores para processar um resultado de consulta. Curti:
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;
});

Agora você tem o mínimo e o máximo e pode calcular a média e a média da soma e da contagem.

O Mongodb não tem a capacidade de calcular as funções agregadas diretamente em sua linguagem de consulta. Na verdade, essa afirmação não é totalmente verdadeira, pois existe a função count() para contar o número de resultados retornados por uma consulta e existe a função group(). Mas a função de grupo é muito parecida com um MapReduce e não pode ser usada em bancos de dados fragmentados. Se você estiver interessado na função de grupo, consulte:http://www. mongodb.org/display/DOCS/Aggregation#Aggregation-Group