El escaneo de la colección en su salida de explicación se refiere a los map_levels
colección, como se indica en el queryPlanner.namespace
valor. El $lookup
La etapa combina datos de otra colección en la canalización actual. Dado que no ha especificado ninguna etapa de consulta antes de $lookup
, los map_levels
La colección se repetirá mediante un análisis de colección. Si se carga una colección completa sin ningún criterio de filtrado u ordenación, un escaneo de la colección tiene menos sobrecarga que iterar un índice y obtener los documentos.
Puede evitar el escaneo de la colección actual agregando un $match
etapa antes de su $lookup
(asumiendo que no desea procesar los map_levels
completos colección).
Desafortunadamente, la salida de explicación de la consulta no indica (como en MongoDB 4.0) el uso del índice para $lookup
etapas Una solución para esto sería ejecutar la explicación usando el pipeline
de su búsqueda. como una consulta de agregación de nivel superior.
Hay un problema relevante para ver/votar en el rastreador de problemas de MongoDB:SERVER-22622:Mejorar $búsqueda explicar para indicar el plan de consulta en la colección "desde" .