devterview_$ iniciar simulação

Aggregation pipeline e por que a ordem dos estágios importa

DifícilSêniorConsultas

Pergunta

O que é o aggregation pipeline do MongoDB, e por que colocar `$match` cedo e `$project` na hora certa muda a performance?

Resposta esperada

O pipeline processa documentos por uma sequência de estágios (`$match`, `$group`, `$sort`, `$lookup`, `$project`, `$unwind`...), cada um recebendo a saída do anterior. Ordem importa: `$match` no INÍCIO filtra o máximo de documentos antes do trabalho caro, e — crucial — um `$match` no primeiro estágio pode usar ÍNDICE (depois de um `$group`/`$unwind` não usa mais, opera sobre resultados intermediários em memória). `$sort` cedo também pode usar índice; depois de um `$group` ele ordena em memória (e tem limite de 100 MB por estágio sem `allowDiskUse`). `$project`/`$unset` pra cortar campos grandes antes de um `$sort`/`$group` reduz o que trafega entre estágios. `$lookup` (o 'join') é caro — filtre antes dele. Regra mental: filtrar e reduzir cedo, operações que quebram o uso de índice o mais tarde possível.

Por que perguntam isso

Pergunta pleno/sênior de Mongo. Sinal de domínio: 'match no primeiro estágio usa índice, depois não' e o limite de 100 MB por estágio.

#aggregation-pipeline#match#lookup#performance
publicidade

Perguntas de acompanhamento

Relacionadas