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

Desempenho terrivelmente degradado com outras condições de junção em $ lookup (usando pipeline)


A segunda versão adiciona uma execução de pipeline de agregação para cada documento na coleção unida .

A documentação diz:

O pipeline é executado para cada documento na coleção, não para cada documento correspondente.

Dependendo do tamanho da coleção (tanto o número de documentos quanto o tamanho do documento), isso pode levar um tempo razoável.

Faz sentido - todos os documentos adicionais devido à remoção do limite também devem ter o pipeline de agregação executado para eles.

É possível que a execução por documento do pipeline de agregação não seja tão otimizada quanto poderia ser. Por exemplo, se o pipeline for configurado e desmontado para cada documento, pode haver facilmente mais sobrecarga isso do que nas condições $match.

A execução de um pipeline de agregação por documento associado oferece flexibilidade adicional. Se você precisar dessa flexibilidade, pode fazer sentido executar o pipeline, embora o desempenho precise ser considerado independentemente. Se você não fizer isso, é sensato usar uma abordagem mais eficiente.