Map-Reduce
Nesta página
Observação
Pipeline de agregação como alternativa
A partir do MongoDB 5.0, o map-reduce foi descontinuado:
Em vez de map-reduce, você deve usar um pipeline de agregação. O pipeline de agregação fornece melhor desempenho e usabilidade do que o map-reduce.
Você pode reescrever operações de redução de mapa utilizando estágios do pipeline de agregação, como
$group
,$merge
e outros.Nas operações de map-reduce que exigem funcionalidade personalizada, você pode usar os operadores de agregação
$accumulator
e$function
. Você pode usar esses operadores para definir expressões de agregação personalizadas no JavaScript.
Para obter exemplos de alternativas de aggregation pipeline para map-reduce, consulte:
Você pode executar pipelines de agregação na IU para sistemas hospedados no MongoDB Atlas.
Map-reduce é um paradigma de processamento de dados para condensar grandes volumes de dados em resultados agregados úteis. Para executar operações de redução de mapa, o MongoDB fornece o comandomapReduce
banco de dados.
Considere a seguinte operação map-reduce:
Nesta operação de redução de mapa, o MongoDB aplica a fase de mapa a cada documento de entrada (ou seja, os documentos da coleção que correspondem à condição de consulta). A função map emite pares de valores-chave. Para as chaves que possuem vários valores, o MongoDB aplica a fase de redução, que coleta e condensa os dados agregados. O MongoDB então armazena os resultados em uma coleção. Opcionalmente, a saída da função de redução pode passar por uma função de finalização para condensar ou processar ainda mais os resultados da agregação.
Todas as funções de redução de mapa no MongoDB são JavaScript e executadas dentro do processo do mongod
. As operações de redução de mapas usam os documentos de uma única coleção como entrada e podem realizar qualquer classificação e limitação arbitrária antes de iniciar o estágio de mapa. mapReduce
pode retornar os resultados de uma operação de redução de mapa como um documento ou pode escrever os resultados em coleções.
Observação
A operação de map-reduce não é aceita em clusters gratuitos do MongoDB Atlas e instâncias sem servidor do MongoDB Atlas.
Funções JavaScript de redução de mapa
No MongoDB, as operações de redução de mapa usam funções JavaScript personalizadas para mapear ou associar valores a uma chave. Se uma chave tiver vários valores mapeados para ela, a operação reduzirá os valores da chave para um único objeto.
O uso de funções JavaScript personalizadas fornece flexibilidade para operações de redução de mapa. Por exemplo, ao processar um documento, a função de mapa pode criar mais de um mapeamento de chave e valor ou nenhum mapeamento. As operações de mapeamento e redução também podem usar uma função JavaScript personalizada para fazer modificações finais nos resultados no final da operação de mapeamento e redução, como a realização de cálculos adicionais.
Mapear resultados de redução
No MongoDB, a operação de redução de mapa pode gravar resultados em uma coleção ou retornar os resultados embutidos. Se você gravar a saída de redução de mapa em uma coleção, poderá executar operações subsequentes de redução de mapa na mesma coleção de entrada que mesclam, substituem, mesclam ou reduzem novos resultados com resultados anteriores. Consulte mapReduce
e Executar Redução de Mapa Incremental para detalhes e exemplos.
Ao retornar os resultados de uma operação de redução de mapa em linha, os documentos resultantes devem estar dentro do limite de tamanho do documento BSON, que atualmente é de 16 megabytes. Para obter mais informações sobre os limites e restrições das operações de redução de mapas, consulte a página de referência do mapReduce.
Coleções fragmentadas
O MongoDB oferece suporte a operações de redução de mapa em coleções fragmentadas.
Visualizações
As visualizações não suportam operações de redução de mapa.