Docs Menu
Docs Home
/ /
Colecciones

db.colección.explain() (método mongosh)

MongoDB con controladores

C#Java SyncNode.jsPyMongoCC++GoJava RSKotlin CoroutineKotlin SyncPHPMongoidRustScala
db.collection.explain()

Se devuelve información sobre el plan del query para los siguientes métodos:

  • aggregate()

  • count()

Devuelve información sobre mapReduce().

Al usar db.collection.explain(), añadir uno de los métodos mencionados a db.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().

El método db.collection.explain() tiene el siguiente parámetro:

Parameter
Tipo
Descripción

verbosity

string

Opcional. Especifica el nivel de verbosidad para la salida de explicación. La moda afecta el comportamiento de explain() y determina la cantidad de información a devolver. Las modas posibles son:

  • "queryPlanner" (por defecto)

  • "executionStats"

  • "allPlansExecution"

Para mantener la compatibilidad con versiones anteriores de cursor.explain(), MongoDB interpreta true como "allPlansExecution" y false como "queryPlanner".

Para obtener más información sobre los modos, consulta Modas de nivel de verbosidad.

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

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.

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.

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.

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:

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

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:

db.collection.explain().aggregate() es equivalente a pasar la opción explain al método db.collection.aggregate().

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.

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;

  • 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; y

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

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 } } )

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" }
)

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 } }
} )

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()

Volver

db.collection.estimatedDocumentCount

En esta página