Definición
cursor.explain(verbosity)Importante
Método mongosh
Este es un método.
mongoshEsta no es la documentación deNode.jsni de otros métodos de controlador específicos del lenguaje de programación.En la mayoría de los casos, los métodos funcionan de la misma manera que los
mongoshheredados.mongoMétodos de shell. Sin embargo, algunos métodos heredados no están disponiblesmongoshen.Para obtener la documentación del shell heredado, consulte la documentación de la versión correspondiente de MongoDB
mongoServer:Para los controladores de la API de MongoDB, consultar la documentación específica del controlador de MongoDB para cada lenguaje.
Proporciona información sobre el plan del query para el método
db.collection.find().El método
explain()tiene la siguiente forma:db.collection.find().explain() El método
explain()tiene el siguiente parámetro:ParameterNecesidadTipoDescripciónverboseOpcional
String
Determina la cantidad de información que se incluirá en la salida de la explicación. Los posibles modos de verbosidad son:
allPlansExecutionexecutionStatsqueryPlanner( Pordefecto)
Para compatibilidad con versiones anteriores de
explain(), MongoDB interpretatruecomoallPlansExecutionyfalsecomoqueryPlanner.Para obtener más información sobre los modos, consulta Modas de nivel de verbosidad.
El método devuelve un documento con el plan de consulta y, opcionalmente, las estadísticas de
explain()ejecución.
Compatibilidad
Este método está disponible en implementaciones alojadas en los siguientes entornos:
MongoDB Atlas: El servicio totalmente gestionado para implementaciones de MongoDB en la nube
Nota
Este comando es compatible con todos los clústeres de MongoDB Atlas. Para obtener información sobre el soporte de Atlas para todos los comandos, consulte Comandos no compatibles.
MongoDB Enterprise: La versión basada en suscripción y autogestionada de MongoDB
MongoDB Community: La versión de MongoDB con código fuente disponible, de uso gratuito y autogestionada.
Comportamiento
Modas de nivel de verbosidad
El comportamiento de cursor.explain() y la cantidad de información devuelta dependen del modo verbosity.
queryPlanner Modo
Por defecto, cursor.explain() se ejecuta en el nivel de verbosidad queryPlanner.
MongoDB ejecuta el optimizador del query para elegir el plan ganador para la operación en evaluación. cursor.explain() devuelve la información de queryPlanner para el método evaluado.
executionStats Modo
MongoDB ejecuta el optimizador del query para elegir el plan ganador, ejecuta el plan ganador hasta su finalización y devuelve estadísticas que describen la ejecución del plan ganador.
cursor.explain() devuelve la queryPlanner y la executionStats información para el método evaluado. Sin embargo, executionStats no proporciona información de ejecución de query para los planes rechazados.
allPlansExecution Modo
MongoDB ejecuta el optimizador de la query para elegir el plan ganador y ejecuta el plan ganador hasta su finalización. En el modo "allPlansExecution" MongoDB devuelve estadísticas que describen la ejecución del plan ganador, así como estadísticas de los otros planes candidatos capturados durante la selección del plan.
cursor.explain() devuelve la queryPlanner y la executionStats información para el método evaluado. El executionStats incluye la información de ejecución de la query completada para el plan ganador.
Si el optimizador del query consideró más de un plan, la información de executionStats también incluye la información de ejecución parcial capturada durante la fase de selección del plan tanto para los planes ganadores como para los rechazados.
db.collection.explain().find()
db.collection.explain().find() es similar a con las siguientes diferencias db.collection.find().explain() clave:
La construcción permite el encadenamiento adicional de modificadores de consulta. Para ver la lista de modificadores de consulta,
db.collection.explain().find()consulte db.collection.explain().find().help().El devuelve un cursor, que requiere una
db.collection.find().explain()llamada.next()a, o a su alias,.finish()para devolver losexplain()resultados de. Si se ejecuta interactivamentemongoshen,mongoshllama automáticamente.finish()a para devolver los resultados. Sin embargo, para los scripts, debe llamar explícitamente a.next()o.finish()para devolver los resultados. Para obtener una lista de los métodos relacionados con los cursores, consulte db.collection.explain().find().help().
Consulta db.collection.explain() para obtener más información.
Salida
cursor.explain() Las operaciones pueden devolver información sobre:
explainVersion, la versión del formato de salida (por ejemplo,"1");command, que detalla el comando que se está explicando;queryPlanner, que detalla el plan seleccionado por el optimizador de consultas y enumera los planes rechazados;executionStats, en el que se detalla la ejecución del plan ganador y de los planes rechazados;serverInfo, que proporciona información sobre la instancia de MongoDB; yserverParameters, que detalla los parámetros internos.
El nivel de verbosidad (es decir, queryPlanner, executionStats, allPlansExecution) determina si los resultados incluyen executionStats y si executionStats incluye datos capturados durante la selección del plan.
Para obtener más detalles sobre la salida, consultar Explicación de resultados.
Ejemplo
El siguiente ejemplo ejecuta cursor.explain() en modo de verbosidad "executionStats" para devolver la información de planificación y ejecución de consultas para la operación db.collection.find() especificada:
db.products.find( { quantity: { $gt: 50 }, category: "apparel" } ).explain("executionStats")