Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

explain (comando de base de datos)

explain

La explain El comando proporciona información sobre la ejecución de los siguientes comandos: aggregate, count, distinct, find, findAndModify, delete, mapReduce, y update.

Tip

En mongosh, este comando también se puede ejecutar a través de los métodos asistentes db.collection.explain() y cursor.explain().

Los métodos asistente son convenientes para usuarios de mongosh, pero es posible que no proporcionen el mismo nivel de información que los comandos de base de datos. En los casos en que no se necesite la conveniencia o se requieran campos de retorno adicionales, utiliza el comando de base de datos.

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.

Este comando 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.

Para usar explain, se debe tener permiso para ejecutar el comando subyacente.

El comando tiene la siguiente sintaxis:

db.runCommand(
{
explain: <command>,
verbosity: <string>,
comment: <any>
}
)

El comando toma los siguientes campos:

Campo
Tipo
Descripción

explain

Documento

Un documento que especifica el comando para el que se va a devolver la información de ejecución. Para obtener más detalles sobre el documento de comando específico, consulte aggregate, count, distinct, find, findAndModify, delete, mapReduce, y update.

verbosity

string

Opcional. Una cadena que especifica el modo de ejecución de. El modo explain explain afecta el comportamiento de y determina la cantidad de información que se devolverá.

Las modas posibles son:

  • "queryPlanner"

  • "executionStats"

  • "allPlansExecution" (por defecto)

Para obtener más información sobre las modas, consulta explicar comportamiento.

comment

any

Opcional. Un comentario proporcionado por el usuario para adjuntar a este comando. Una vez configurado, este comentario aparece junto a los registros de este comando en las siguientes ubicaciones:

Un comentario puede ser de cualquier tipo BSON válido (string, objeto, arreglo, etc.).

Si especificas explain sin un comment, hereda cualquier comment en el comando especificado para explain.

El comportamiento de explain y la cantidad de información devuelta dependen del modo verbosity.

MongoDB ejecuta el optimizador del query para elegir el plan ganador para la operación bajo evaluación. explain devuelve la información de queryPlanner para el <command> 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, 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.

explaindevuelve la información dequeryPlanneryexecutionStatspara el <command> evaluado. Sin embargo, executionStatsno proporciona información de ejecución de consultas para los planes rechazados.

Por defecto, explain se ejecuta en el nivel de verbosidad "allPlansExecution".

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

explain devuelve la información de queryPlanner y executionStats para el <command> evaluado. El executionStats incluye la información sobre la ejecución de la consulta realizada 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.

Para las operaciones de escritura, el explain comando devuelve información sobre la operación de escritura que se realizaría, pero en realidad no modifica la base de datos.

La Stable API V1 admite los siguientes modos de verbosidad para el comando explain:

Advertencia

MongoDB no garantiza ningún formato de salida específico del comando explain, incluso al usar la Stable API.

No puedes ejecutar el comando explain /db.collection.explain() en el modo executionStats o el modo allPlansExecution para un aggregation pipeline que contenga la etapa $out. En su lugar, puede:

  • ejecutar la explicación en queryPlanner moda o

  • Ejecutar la explicación en moda executionStats o moda allPlansExecution pero sin la etapa $out para devolver información de las etapas que preceden a la etapa $out.

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 de explain.queryShapeHash consulta 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.

El siguiente comando explain se ejecuta en el modo de nivel de verbosidad "queryPlanner" para devolver la información de planificación de query para un comando count:

db.runCommand(
{
explain: { count: "products", query: { quantity: { $gt: 50 } } },
verbosity: "queryPlanner"
}
)

La siguiente explain operación se ejecuta en el modo de nivel de verbosidad de "executionStats" para devolver la planificación de la query y la información de ejecución para un comando count:

db.runCommand(
{
explain: { count: "products", query: { quantity: { $gt: 50 } } },
verbosity: "executionStats"
}
)

Por defecto, explain se ejecuta en el nivel de verbosidad "allPlansExecution". El siguiente comando explain devuelve la queryPlanner y la executionStats para todos los planes considerados de un comando update:

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.runCommand(
{
explain: {
update: "products",
updates: [
{
q: { quantity: 1057, category: "apparel" },
u: { $set: { reorder: true } }
}
]
}
}
)

Volver

dbStats

Obtén una insignia de habilidad

¡Domina "Query Optimization" gratis!

Más información

En esta página