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

A execução da consulta Mongodb leva muito tempo


Há muitas coisas a fazer para otimizar sua consulta. O que eu tentaria:

  • Como Anthony Winzlet disse nos comentários, use o estágio $match possível como primeiro estágio. Dessa forma, você pode reduzir o número de documentos passados ​​para as etapas seguintes e usar índices.

  • Supondo que você use pelo menos a versão 3.6 do mongo, altere seus estágios de pesquisa usando a sintaxe 'let/pipeline' (veja aqui ). Dessa forma, você pode integrar seus 'filtros externos' ( "customer_info.status":{$ne:9}, "model_info.status":{$ne:9} ) em um estágio $match em seu pipeline de pesquisas. Com índices nos campos/coleções corretos, você ganhará algum tempo/memória em seus estágios de $lookup.

  • Faça suas etapas de desenrolamento o mais tarde possível, para restringir o número de documentos passados ​​para as etapas seguintes.

É importante entender como funciona o pipeline de agregação:cada estágio recebe dados, faz suas coisas e passa os dados para o próximo estágio. Portanto, quanto menos dados forem passados ​​para o pipeline, mais rápida será sua consulta.