sql >> Base de Datos >  >> NoSQL >> MongoDB

mongodb - tubería de $búsqueda usando COLLSCAN en lugar de índice

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" .