MongoDB com drivers
Descrição
db.collection.explain()Retorna informações no plano de query para os seguintes métodos:
Retorna informações sobre
mapReduce().To use
db.collection.explain(), append one of the aforementioned methods todb.collection.explain():db.collection.explain().<method(...)> Por exemplo,
db.products.explain().remove( { category: "apparel" }, { justOne: true } ) Para obter mais exemplos, consulte Exemplos. Consulte também db.collection.explain().help().
Parâmetros
The db.collection.explain() method has the following parameter:
Parâmetro | Tipo | Descrição |
|---|---|---|
| string | Opcional. Especifica o modo de verbosidade para o resultado de explicação. O modo afeta o comportamento de
Para compatibilidade com versões anteriores do For more information on the modes, see Verbosity Modes. |
Observação
db.collection.explain() o padrão é queryPlanner, ao contrário do comando explain, cujo padrão é allPlansExecution.
Acesso necessário
Para utilizar o explain, você deve ter permissão para executar o comando subjacente.
Comportamento
Observação
Usar explain ignora todas as entradas de cache do plano existentes e evita que o planejador de query do MongoDB crie uma nova entrada de cache do plano.
Modos de Verbosidade
The behavior of db.collection.explain() and the amount of information returned depend on the verbosity mode.
By default, db.collection.explain() runs in queryPlanner verbosity mode.
MongoDB runs the query optimizer to choose the winning plan for the operation under evaluation. db.collection.explain() returns the queryPlanner information for the evaluated method.
O MongoDB executa o otimizador de query para escolher o plano vencedor, executa o plano vencedor até a conclusão e retorna estatísticas que descrevem a execução do plano vencedor.
For write operations, db.collection.explain() returns information about the update or delete operations that would be performed, but does not apply the modifications to the database.
db.collection.explain() returns the queryPlanner and executionStats information for the evaluated method. However, executionStats does not provide query execution information for the rejected plans.
O MongoDB executa o otimizador de query para escolher o plano vencedor e executar o plano vencedor para conclusão. No modo "allPlansExecution", MongoDB retorna estatísticas descrevendo a execução do plano vencedor, bem como estatísticas para os outros planos candidatos capturados durante a seleção do plano.
For write operations, db.collection.explain() returns information about the update or delete operations that would be performed, but does not apply the modifications to the database.
db.collection.explain() returns the queryPlanner and executionStats information for the evaluated method. The executionStats includes the completed query execution information for the winning plan.
Se o otimizador de query considerar mais de um plano, as informaçõesexecutionStats também incluirão as informações de execução parcial capturadas durante a fase de seleção do plano para os planos de candidatos vencedores e rejeitados.
Operações de explicação e gravação
For write operations, db.collection.explain() returns information about the write operation that would be performed but does not actually modify the database.
Restrições
You cannot run the explain command/db.collection.explain() in executionStats mode or allPlansExecution mode for an aggregation pipeline that contains the $out stage. Instead, you can either:
executar a explicação no modo
queryPlannerou
explain() Mecânica
The db.collection.explain() method wraps the explain command and is the preferred way to run explain.
db.collection.explain().find() is similar to db.collection.find().explain() with the following key differences:
The
db.collection.explain().find()construct allows for the additional chaining of query modifiers. For list of query modifiers, see db.collection.explain().find().help().The
db.collection.find().explain()returns theexplain()information on the query plan.
db.collection.explain().aggregate() is equivalent to passing the explain option to the db.collection.aggregate() method.
help()
To see the list of operations supported by db.collection.explain(), run:
db.collection.explain().help()
db.collection.explain().find() returns a cursor, which allows for the chaining of query modifiers. To see the list of query modifiers supported by db.collection.explain().find() as well as cursor-related methods, run:
db.collection.explain().find().help()
You can chain multiple modifiers to db.collection.explain().find(). For an example, see Explain find() with Modifiers.
Saída
db.collection.explain() as operações podem retornar informações sobre:
explainVersion, a versão do formato de saída (por exemplo,"1").command, que detalha o comando a ser explicado.queryPlanner, que detalha o plano selecionado pelo otimizador de query e lista os planos rejeitados.executionStats, que detalha a execução do plano vencedor e os planos rejeitados.serverInfo, que fornece informações sobre a instância MongoDB.serverParameters, que detalha os parâmetros internos.
O modo de verbosidade (ou seja, queryPlanner, executionStats, allPlansExecution) determina se os resultados incluem executionStats e se executionStats inclui dados capturados durante a seleção do plano.
A saída de explicação é limitada pela profundidade máxima aninhada para documentos BSON, que é de 100 níveis de aninhamento. A saída de explicações que excede o limite é truncada.
Para obter detalhes sobre o resultado, consulte Explicar os resultados.
Exemplos
queryPlanner Modo
By default, db.collection.explain() runs in "queryPlanner" verbosity mode.
The following example runs db.collection.explain() in "queryPlanner" verbosity mode to return the query planning information for the specified count() operation:
db.products.explain().count( { quantity: { $gt: 50 } } )
executionStats Modo
The following example runs db.collection.explain() in "executionStats" verbosity mode to return the query planning and execution information for the specified find() operation:
db.products.explain("executionStats").find( { quantity: { $gt: 50 }, category: "apparel" } )
allPlansExecution Modo
The following example runs db.collection.explain() in "allPlansExecution" verbosity mode. db.collection.explain() returns the queryPlanner and executionStats for all considered plans for the specified findAndModify() operation:
Observação
A execução desta explicação não modificará os dados, mas executará o predicado de query da operação de atualização. Para planos candidatos, o MongoDB retorna as informações de execução capturadas durante a fase de seleção do plano.
db.products.explain( "allPlansExecution" ).findAndModify( { query: { name: "Tom", state: "active", rating: { $gt: 10 } }, sort: { rating: 1 }, update: { $inc: { score: 1 } } } )
Explique find() com modificadores
db.collection.explain().find() construct allows for the chaining of query modifiers. For example, the following operation provides information on the find() method with sort() and hint() query modifiers.
db.products.explain("executionStats").find( { quantity: { $gt: 50 }, category: "apparel" } ).sort( { quantity: -1 } ).hint( { category: 1, quantity: -1 } )
For a list of query modifiers available, run the following in mongosh:
db.collection.explain().find().help()