Obtenha informações de acesso ao índice com $indexStats
Use o estágio de agregação $indexStats para obter estatísticas sobre o uso de cada índice para uma coleção. Por exemplo, a seguinte operação de agregação retorna estatísticas sobre o uso do índice na coleção orders:
db.orders.aggregate( [ { $indexStats: { } } ] )
Dica
Retornar plano de query com explain()
Utilize o método db.collection.explain() ou cursor.explain() no modo executionStats para retornar estatísticas sobre o processo de query, incluindo o índice utilizado, o número de documentos digitalizados e o tempo que a query leva para processar em milissegundos.
Execute o db.collection.explain() ou o método cursor.explain() no modo allPlansExecution para visualizar estatísticas de execução parcial coletadas durante a seleção do plano.
Dica
Uso do Índice de Controle com hint()
Para forçar o MongoDB a usar um índice específico para uma operação db.collection.find(), especifique o índice com o método hint(). Anexe o método hint() ao método find(). Considere o seguinte exemplo:
db.people.find( { name: "John Doe", zipcode: { $gt: "63000" } } ).hint( { zipcode: 1 } )
Para exibir as estatísticas de execução de um índice específico, acrescente ao db.collection.find() o método hint() seguido decursor.explain(), por exemplo:
db.people.find( { name: "John Doe", zipcode: { $gt: "63000" } } ).hint( { zipcode: 1 } ).explain("executionStats")
Ou anexe o método hint() a db.collection.explain().find():
db.people.explain("executionStats").find( { name: "John Doe", zipcode: { $gt: "63000" } } ).hint( { zipcode: 1 } )
Especifique o operador $natural para o método hint() para evitar que o MongoDB utilize qualquer índice:
db.people.find( { name: "John Doe", zipcode: { $gt: "63000" } } ).hint( { $natural: 1 } )
Métricas de índice
Além do estágio de agregação $indexStats, o MongoDB fornece várias estatísticas de índice que você pode considerar ao analisar o uso do índice em seu banco de dados: