A varredura de coleção em sua saída de explicação está se referindo ao
map_levels
coleção, conforme observado no queryPlanner.namespace
valor. A $lookup
stage mescla dados de outra coleção no pipeline atual. Como você não especificou nenhum estágio de consulta antes do $lookup
, os map_levels
coleção será iterada usando uma varredura de coleção. Se uma coleção inteira estiver sendo carregada sem nenhum critério de filtragem ou classificação, uma varredura de coleção terá menos sobrecarga do que iterar um índice e buscar os documentos. Você pode evitar a verificação da coleção atual adicionando um
$match
estágio antes do seu $lookup
(assumindo que você não deseja processar os map_levels
completos coleção). Infelizmente, a saída da explicação da consulta não (como no MongoDB 4.0) indica o uso do índice para
$lookup
estágios. Uma solução alternativa para isso seria executar a explicação usando o pipeline
da sua pesquisa como uma consulta de agregação de nível superior. Há um problema relevante para assistir/votar no rastreador de problemas do MongoDB:SERVER-22622:Improve $lookup explicar para indicar o plano de consulta na coleção "de" .