Definición
$indexStatsNovedad en la versión 3.2.
Devuelve estadísticas sobre el uso de cada índice en la colección. Si se ejecuta con control de acceso, autenticarse como un usuario con al menos el rol de
clusterMonitor.La etapa
$indexStatstoma un documento vacío y tiene la siguiente sintaxis:{ $indexStats: { } } Para cada índice, el documento de retorno incluye los siguientes campos:
Campo de salidaDescripciónnameNombre del índice.
Especificación de clave de índice.
Ver también: espec.
El nombre de host y el puerto del proceso
mongod.Estadísticas sobre el uso del índice:
opses el número de operaciones que usaron el índice.sincees el tiempo desde el que MongoDB recogió las estadísticas.
El nombre de la partición asociada con el host
Solo disponible para un clúster fragmentado.
El documento de especificación detallada para el índice, que incluye la clave del índice y las propiedades del índice.
La opción de índice
hiddensolo se incluye si el valor estrue.Indica si el índice se está compilando actualmente.
Solo disponible si
true.
Comportamiento
Accede a Campo
Las estadísticas reportadas por el campo accesos solo se aplican al nodo donde se ejecuta la query y solo incluyen el acceso al índice impulsado por solicitudes de usuario. No incluye operaciones internas como la eliminación mediante índices TTL u operaciones de división y migración de fragmentos.
Restricciones
$indexStatsdebe ser la primera etapa en un pipeline de agregación.$indexStatsno se permite en las transacciones.
Consideraciones sobre el restablecimiento de las estadísticas del índice
Ejemplo
Por ejemplo, una colección orders contiene los siguientes 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" } ] )
Crea los siguientes dos índices en la colección:
db.orders.createIndex( { item: 1, quantity: 1 } ) db.orders.createIndex( { type: 1, item: 1 } ) db.orders.createIndex( { price: 1 }, { partialFilterExpression: { type: "apparel" } } )
Ejecutar algunas consultas contra la colección:
db.orders.find( { type: "apparel"} ) db.orders.find( { item: "abc" } ).sort( { quantity: 1 } ) db.orders.find( { price: { $gt: 10 } } )
Para ver estadísticas sobre el uso del índice en la colección orders, ejecute la siguiente operación de agregación:
db.orders.aggregate( [ { $indexStats: { } } ] )
La operación devuelve un documento que contiene estadí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' } } } ]