Docs Menu
Docs Home
/ /
Etapas de la pipeline de agregación

$indexStats (operador de expresión)

$indexStats

Devuelve estadísticas sobre el uso de cada índice para la colección. Si se ejecuta con control de acceso, autenticarse como usuario con al menos el clusterMonitor rol.

La etapa toma un documento vacío y tiene la siguiente $indexStats sintaxis:

{ $indexStats: { } }

Para cada índice, el documento de retorno incluye los siguientes campos:

Campo de salida
Descripción

name

Nombre del índice.

Especificación de clave de índice.

Ver también: especificación.

El nombre de host y el puerto del mongod proceso.

Estadísticas sobre el uso del índice:

  • ops es el número de operaciones que utilizaron el índice.

  • since es el tiempo desde el que MongoDB recogió las estadísticas.

El nombre del fragmento asociado con el host

Sólo disponible para un clúster fragmentado.

El documento de especificación completo del índice, que incluye la clave del índice y las propiedades del índice.

La opción de índice hidden solo se incluye si el valor es true.

Indica si el índice se está construyendo actualmente.

Sólo disponible si true.

Las estadísticas que reporta el campo de accesos solo se aplican al nodo donde se ejecuta la consulta e incluyen únicamente el acceso al índice generado por las solicitudes del usuario. No incluyen operaciones internas como la eliminación mediante índices TTL ni las operaciones de división y migración de fragmentos.

  • $indexStats Debe ser la primera etapa de un proceso de agregación.

  • $indexStats No está permitido en las transacciones.

  • Estadísticas para un restablecimiento de índice en mongod el reinicio o eliminación y recreación del índice.

  • La modificación de un índice existente (ver comando collMod) restablece las estadísticas para ese índice.

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" }
] )

Cree 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" } }
)

Ejecute 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 las 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' }
}
}
]

Para utilizar el controlador de MongoDB Node.js para agregar una etapa de $indexStats a una canalización de agregación, utilice el Operador $indexStats en un objeto de canalización.

El siguiente ejemplo crea una etapa de canalización que devuelve un documento con estadísticas de uso para cada índice de la colección. A continuación, el ejemplo ejecuta la canalización de agregación:

const pipeline = [{ $indexStats: {} }];
const cursor = collection.aggregate(pipeline);
return cursor;

Volver

$group

En esta página