Definição
- $indexStats
- Retorna estatísticas sobre o uso de cada índice para a coleção. Se estiver executando com ocontrole de acesso do , autentique como um usuário com pelo menos o papel - clusterMonitor.- O estágio - $indexStatsrecebe um documento vazio e tem a seguinte sintaxe:- { $indexStats: { } } - Para cada índice, o documento de devolução inclui os seguintes campos: Campo de SaídaDescrição- name- Nome do Índice. - Especificação da chave de índice. - Consultetambém: especificações. - O nome de host e porta do processo do - mongod.- Estatísticas sobre o uso do índice: - opsé o número de operações que usaram o índice.
- sinceé o momento a partir do qual o MongoDB coletou as estatísticas.
 - O nome do fragmento associado ao host - Disponível apenas para um cluster fragmentado. - O documento de especificação completo do índice, que inclui a chave do índice e as propriedades do índice. - A opção de índice - hiddensó será incluída se o valor for- true.- Indica se o índice está sendo construído no momento. - Disponível apenas se - true.
Comportamento
Campo de Acessos
As estatísticas relatadas pelo campo acessos se aplicam apenas ao nó onde a query está sendo executada e incluem apenas o acesso ao índice acionado por solicitações do usuário. Não inclui operações internas, como exclusão por meio de índices TTL ou operações de migração e divisão em partes.
Restrições
- $indexStatsdeve ser o primeiro estágio em um pipeline de agregação.
- $indexStatsnão é permitido em transações.
Considerações sobre redefinição de estatísticas de índice
Exemplos
Por exemplo, uma collection orders contém os seguintes documentos:
db.orders.insertMany( [    { _id : 1, item : "abc", price : 12, quantity : 2, type: "apparel" },    { _id : 2, item : "jkl", price : 20, quantity : 1, type: "electronics" },    { _id : 3, item : "abc", price : 10, quantity : 5, type: "apparel" } ] ) 
Criar os seguintes dois índices na coleção:
db.orders.createIndex( { item: 1, quantity: 1 } ) db.orders.createIndex( { type: 1, item: 1 } ) db.orders.createIndex(    { price: 1 },    { partialFilterExpression: { type: "apparel" } } ) 
Execute algumas consultas em relação à coleção:
db.orders.find( { type: "apparel"} ) db.orders.find( { item: "abc" } ).sort( { quantity: 1 } ) db.orders.find( { price: { $gt: 10 } } ) 
Para visualizar estatísticas sobre o uso do índice na coleção orders, execute a seguinte operação de agregação:
db.orders.aggregate( [ { $indexStats: { } } ] ) 
A operação retorna um documento que contém estatísticas de uso para cada índice:
[    {       name: 'type_1_item_1',       key: { type: 1, item: 1 },       host: 'examplehost.local:27018',       accesses: { ops: Long("1"), since: ISODate("2024-05-02T15:07:21.420Z") },       shard: "shardA",       spec: { v: 2, key: { type: 1, item: 1 }, name: 'type_1_item_1' }    },    {       name: 'item_1_quantity_1',       key: { item: 1, quantity: 1 },       host: 'examplehost.local:27018',       accesses: { ops: Long("1"), since: ISODate("2024-05-02T15:07:21.254Z") },       shard: "shardA",       spec: { v: 2, key: { item: 1, quantity: 1 }, name: 'item_1_quantity_1' }    },    {       name: '_id_',       key: { _id: 1 },       host: 'examplehost.local:27018',       accesses: { ops: Long("0"), since: ISODate("2024-05-02T15:07:13.274Z") },       shard: "shardA",       spec: { v: 2, key: { _id: 1 }, name: '_id_' }    },    {       name: 'price_1',       key: { price: 1 },       host: 'examplehost.local:27018',       accesses: { ops: Long("0"), since: ISODate("2024-05-02T15:07:54.847Z") },       shard: "shardA",       spec: {          v: 2,          key: { price: 1 },          name: 'price_1',          partialFilterExpression: { type: 'apparel' }       }    } ] 
Para usar o driver Node.js do MongoDB para adicionar um estágio $indexStats a um pipeline de agregação , use o operador $indexStats em um objeto de pipeline.
O exemplo a seguir cria um estágio de pipeline que retorna um documento que contém estatísticas de uso para cada índice da coleção. Em seguida, o exemplo executa o agregação pipeline:
const pipeline = [{ $indexStats: {} }]; const cursor = collection.aggregate(pipeline); return cursor;