MongoDB con controladores
Esta página documenta una mongosh . Para ver el método equivalente en un driver de MongoDB, se debe consultar la página correspondiente al lenguaje de programación:
Descripción
db.collection.explain()Se devuelve información sobre el plan del query para los siguientes métodos:
Devuelve información sobre
mapReduce().Al usar
db.collection.explain(), añadir uno de los métodos mencionados adb.collection.explain():db.collection.explain().<method(...)> Por ejemplo,
db.products.explain().remove( { category: "apparel" }, { justOne: true } ) Para más ejemplos, consulta Ejemplos. Véase también db.colección.explain().help().
Parámetros
El método db.collection.explain() tiene el siguiente parámetro:
Parameter | Tipo | Descripción |
|---|---|---|
| string | Opcional. Especifica el nivel de verbosidad para la salida de explicación. La moda afecta el comportamiento de
Para mantener la compatibilidad con versiones anteriores de Para obtener más información sobre los modos, consulta Modas de nivel de verbosidad. |
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.
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
El comportamiento de db.collection.explain() y la cantidad de información devuelta dependen del modo verbosity.
Por defecto, db.collection.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. db.collection.explain() devuelve la información de queryPlanner para el método evaluado.
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.
Para las operaciones de escritura, db.collection.explain() devuelve información sobre las operaciones de actualización o borrado que se realizarían, pero no aplica las modificaciones a la base de datos.
db.collection.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.
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.
Para las operaciones de escritura, db.collection.explain() devuelve información sobre las operaciones de actualización o borrado que se realizarían, pero no aplica las modificaciones a la base de datos.
db.collection.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.
Explica y guarda Operaciones
Para las operaciones de guardado, db.collection.explain() devuelve información sobre la operación de guardado que se realizaría pero no modifica realmente la base de datos.
Restricciones
No puedes Ejecutar el comando explain /db.collection.explain() en moda executionStats o moda allPlansExecution para un aggregation pipeline que contenga la etapa $out. En cambio, puedes elegir entre:
explain() Mecanismo
El método db.collection.explain() encapsula el comando explain y es la forma preferida de ejecutar explain.
db.collection.explain().find() es similar a db.collection.find().explain() con las siguientes diferencias clave:
La construcción
db.collection.explain().find()permite el encadenamiento adicional de modificadores de query. Para obtener una lista de modificadores de query, consultar db.collection.explain().find().help().El
db.collection.find().explain()devuelve la informaciónexplain()sobre el plan del query.
db.collection.explain().aggregate() es equivalente a pasar la opción explain al método db.collection.aggregate().
help()
Para ver la lista de operaciones admitidas por db.collection.explain(), ejecutar:
db.collection.explain().help()
db.collection.explain().find() devuelve un cursor, lo que permite encadenar modificadores de query. Para ver la lista de modificadores de query soportados por db.collection.explain().find() así como los métodos relacionados con el cursor, ejecutar:
db.collection.explain().find().help()
Puedes encadenar varios modificadores a db.collection.explain().find(). Para un ejemplo, consulta Explicar find() con Modificadores.
Salida
db.collection.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, que comienza en MongoDB,8.0 que es una cadena hexadecimal con el hash de una forma de consulta. Para más información, consulte Formas de consulta, Hash de forma deexplain.queryShapeHashconsulta y.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.
Ejemplos
queryPlanner Modo
Por defecto, db.collection.explain() se ejecuta en el nivel de verbosidad "queryPlanner".
El siguiente ejemplo ejecuta db.collection.explain() en moda de nivel de verbosidad "queryPlanner" para devolver la información de planificación de la query para la operación count() especificada:
db.products.explain().count( { quantity: { $gt: 50 } } )
executionStats Modo
El siguiente ejemplo ejecuta db.collection.explain() en el modo nivel de verbosidad "executionStats" para devolver la información de planificación y ejecución de la query para la operación especificada find():
db.products.explain("executionStats").find( { quantity: { $gt: 50 }, category: "apparel" } )
allPlansExecution Modo
El siguiente ejemplo ejecuta db.collection.explain() en moda de nivel de verbosidad "allPlansExecution". db.collection.explain() devuelve el queryPlanner y el executionStats para todos los planes considerados para la operación findAndModify() especificada:
Nota
La ejecución de esta explicación no modificará los datos, pero ejecuta el predicado de query de la operación de actualizar. Para los planes candidatos, MongoDB devuelve la información de ejecución capturada durante la fase de selección del plan.
db.products.explain( "allPlansExecution" ).findAndModify( { query: { name: "Tom", state: "active", rating: { $gt: 10 } }, sort: { rating: 1 }, update: { $inc: { score: 1 } } } )
Explicar find() con modificadores
db.collection.explain().find() construct permite el encadenamiento de modificadores de query. Por ejemplo, la siguiente operación proporciona información sobre el método find() con los modificadores de query sort() y hint().
db.products.explain("executionStats").find( { quantity: { $gt: 50 }, category: "apparel" } ).sort( { quantity: -1 } ).hint( { category: 1, quantity: -1 } )
Para obtener una lista de los modificadores de query disponibles, ejecutar lo siguiente en mongosh:
db.collection.explain().find().help()
Acceda a los explain() resultados con finish() el método
El db.collection.explain().find() devuelve los resultados explain(). Si se ejecuta de forma interactiva en mongosh puedes utilizar el método .finish() para acceder al plan del query:
db.products.explain().find( { category: "apparel" } ).finish().queryPlanner.winningPlan;