$indexStats (agregação)
Nesta página
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
$indexStats
recebe 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çãoname
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
hidden
só será incluída se o valor fortrue
.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
$indexStats
deve ser o primeiro estágio em um pipeline de agregação.$indexStats
não é permitido em transações.
Considerações sobre redefinição de estatísticas de índice
Exemplo
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' } } } ]