explain() (Explicar Plano de Execução)
Última atualização: 2026-10-09
explain() (Explicar Plano de Execução)
explain() revela o plano de execução de uma consulta: `db.users.find({ age: { $gt: 20 } }).explain('executionStats')`. O resultado mostra uso de índices, documentos varridos e tempos — o kit de ferramentas central para ajuste de desempenho. O argumento pode ser 'queryPlanner' (padrão, apenas o plano), 'executionStats' (estatísticas reais de execução) ou 'allPlansExecution' (todos os planos candidatos).
| Categoria | Cursor |
|---|---|
| Versão do MongoDB | 1.0+ |
| Idioma do Exemplo | mongosh (Shell) |
📝 Sintaxe
db.<collection>.find(<filter>).explain(<verbosity>)
⚙️ Parâmetros
| modo | Opcional. 'queryPlanner', 'executionStats' ou 'allPlansExecution'. |
|---|
Retorno:Documento com o plano de execução e estatísticas.
▶ Exemplo
Execute os comandos abaixo no seu mongosh local (requer um mongod em execução):
// explain: verifica se a consulta de age usa um índice
const plan = db.users.find({ age: { $gt: 20 } })
.explain('executionStats')
print('Docs examined: ' + plan.executionStats.totalDocsExamined)
Saída:
Docs examinados: 1000
📌 Notas
- totalDocsExamined muito acima da contagem de resultados sinaliza um índice ausente
- winningPlan mostra o plano real em que o otimizador se firmou
- explain() retorna informações do plano, não dados reais
🏷️ Tags Relacionados
💡 Casos Relacionados
Fundamentos e princípios da indexação
Tipos de índice e recursos avançados
$lookup e associações com múltiplos conjuntos
Otimização e monitoramento de desempenho: ajuste em ambiente de produção
Sharding: Escalonamento horizontal
📚 Tutoriais Relacionados
❓ Perguntas Frequentes
QComo sei se uma consulta usa um índice?
AInspecione winningPlan: IXSCAN significa que um índice foi usado; COLLSCAN significa varredura completa da coleção.
QQuais são as diferenças entre os três modos de explain?
AqueryPlanner mostra apenas o plano e é o mais rápido; executionStats adiciona estatísticas reais de execução; allPlansExecution detalha cada plano candidato.
QO explain realmente executa a consulta?
AEle executa sim (exceto no modo queryPlanner) — as estatísticas vêm de uma execução real, mas nenhum documento é retornado.