Definición
cursor.explain(verbosity)Importante
Método mongosh
This page documents a
mongoshmethod. This is not the documentation for a language-specific driver, such as Node.js.Para los drivers de API de MongoDB, consulte la documentación del driver de MongoDB específica del 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 explicación de la salida. Los posibles niveles de verbosidad son:
allPlansExecutionexecutionStatsqueryPlanner(por defecto)
Para mantener la compatibilidad con versiones anteriores de
explain(), MongoDB interpretatruecomoallPlansExecutionyfalsecomoqueryPlanner.Para obtener más información sobre los modos, se puede consultar Modas de nivel de verbosidad.
The
explain()method returns a document with the query plan and, optionally, the execution statistics.
Nota
cursor.explain() por defecto es queryPlanner, a diferencia del comando explain, que por defecto es allPlansExecution.
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
This command is supported in all MongoDB Atlas clusters. For information on Atlas support for all commands, see Unsupported Commands.
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.
Acceso requerido
Para usar explain, se debe tener permiso para ejecutar el comando subyacente.
Comportamiento
Nota
El uso de explain ignora todas las entradas existentes en la caché del plan e impide que el planificador de query de MongoDB cree una nueva entrada en la caché del plan.
Modas de nivel de verbosidad
The behavior of cursor.explain() and the amount of information returned depend on the verbosity mode.
queryPlanner Modo
By default, cursor.explain() runs in queryPlanner verbosity mode.
MongoDB runs the query optimizer to choose the winning plan for the operation under evaluation. cursor.explain() returns the queryPlanner information for the evaluated method.
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() returns the queryPlanner and executionStats information for the evaluated method. However, executionStats does not provide query execution information for the rejected plans.
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() returns the queryPlanner and executionStats information for the evaluated method. The executionStats includes the completed query execution information for the winning plan.
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:
El constructo
db.collection.explain().find()permite el encadenamiento adicional de modificadores de queries. Para obtener una lista de los modificadores de query, consulte db.collection.explain().find().help().El
db.collection.find().explain()devuelve la información deexplain()sobre el plan del query.
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.queryShapeHash, comenzando en MongoDB 8.0, que es una string hexadecimal con el hash de una forma del query. Para obtener detalles, consulta Formas del query, Hash de Forma del query yexplain.queryShapeHash.queryPlanner, que detalla el plan seleccionado por el optimizador del query y enumera los planes rechazados.executionStats, que detalla la ejecución del plan ganador y de los planes rechazados.serverInfo, que proporciona información sobre la instancia de MongoDB.serverParameters, 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.
La salida de la explicación está limitada por la profundidad máxima de anidación para documentos BSON, que es de 100 niveles de anidación. Explicar que la salida que excede el límite se trunca.
Para obtener más detalles sobre la salida, consultar Explicación de resultados.
Ejemplo
El siguiente ejemplo ejecuta cursor.explain() en modo de detalle "executionStats" para devolver la información de planificación y ejecución de la consulta para la db.collection.find() operación especificada:
db.products.find( { quantity: { $gt: 50 }, category: "apparel" } ).explain("executionStats")