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

$collStats (agregación)

$collStats

Nuevo en la versión 3.4.

Devuelve estadísticas sobre una colección o vista.

La etapa $collStats tiene la siguiente forma de prototipo:

{
$collStats:
{
latencyStats: { histograms: <boolean> },
storageStats: { scale: <number> },
count: {},
queryExecStats: {}
}
}

La $collStats etapa acepta un documento de argumento con los siguientes campos opcionales:

Nombre de campo
Descripción

latencyStats

Añade Estadísticas de latencia al documento de retorno.

latencyStats.histograms

Agrega información del histograma de latencia a los documentos incrustados en latencyStats si true.

storageStats

Agrega estadísticas de almacenamiento al documento de devolución.

  • Especifica un documento vacío (es decir, storageStats: {}) para usar el factor de escala por defecto de 1 para los diversos datos de tamaño. Un factor de escala de 1 muestra los tamaños devueltos en bytes.

  • Especifique el factor de escala (p. ej., storageStats: { scale: <number> }) para utilizarlo en los datos de distintos tamaños. Por ejemplo, para mostrar kilobytes en lugar de bytes, especifique un valor de escala de 1024.

    Si se especifica un factor de escala no entero, MongoDB utiliza la parte entera del factor especificado. Por ejemplo, si se especifica un factor de escala de 1023.999, MongoDB utiliza 1023 como factor de escala.

    El factor de escala no afecta a aquellos tamaños que especifican la unidad de medida en el nombre del campo, como "bytes currently in the cache".

count

Agrega el número total de documentos de la colección al documento de devolución.

El recuento se basa en los metadatos de la colección, que proporcionan un recuento rápido pero a veces inexacto para los clústeres fragmentados.

Ver count campo

Nuevo en la versión 3.6.

queryExecStats

Agrega estadísticas de ejecución de consultas al documento de retorno.

Para una colección en un conjunto de réplicas o una colección no fragmentada en un clúster, $collStats genera un solo documento. Para una colección fragmentada, $collStats genera un documento por fragmento. El documento de salida incluye los siguientes campos:

Nombre de campo
Descripción

ns

El namespace de la colección o vista solicitada.

shard

El nombre de la partición al que corresponde el documento de salida.

Solo aparece cuando $collStats se ejecuta en un clúster particionado. Tanto las colecciones particionadas como las no particionadas producirán este campo.

Nuevo en la versión 3.6.

host

El nombre de host y el puerto del proceso mongod que produjo el documento de salida.

Nuevo en la versión 3.6.

localTime

La hora actual en el servidor MongoDB, expresada en milisegundos UTC desde la época UNIX.

latencyStats

Estadísticas relacionadas con la latencia de las solicitudes de una colección o vista. Consulte el documento latencyStats para obtener más información.

Sólo está presente cuando se especifica la opción latencyStats: {}.

storageStats

Estadísticas relacionadas con el motor de almacenamiento de una colección. Consulte el documento para obtener más storageStats información.

Los distintos tamaños de datos se escalan según el factor especificado (con excepción de aquellos tamaños que especifican la unidad de medida en el nombre del campo).

Sólo está presente cuando se especifica la opción storageStats.

Devuelve un error si se aplica a una vista.

count

Número total de documentos de la colección. Estos datos también están disponibles en storageStats.count.

El recuento se basa en los metadatos de la colección, que proporcionan un recuento rápido pero a veces inexacto para los clústeres fragmentados.

Solo está presente cuando count: {} se especifica la opción. Devuelve un error si se aplica a una vista.

queryExecStats

Estadísticas relacionadas con la ejecución de consultas para la colección.

Solo está presente cuando queryExecStats: {} se especifica la opción. Devuelve un error si se aplica a una vista.

$collStats debe ser la primera etapa de una secuencia de agregación, de lo contrario la secuencia devuelve un error.

$collStats No está permitido en las transacciones.

El documento incrustado latencyStats solo existe en la salida si especifica la opción latencyStats.

Nombre de campo
Descripción

reads

Estadísticas de latencia para solicitudes de lectura.

writes

Estadísticas de latencia para solicitudes de escritura.

commands

Estadísticas de latencia para comandos de bases de datos.

Cada uno de estos campos contiene un documento incrustado con los siguientes campos:

Nombre de campo
Descripción

latency

Un entero de 64bits que proporciona la latencia combinada total en microsegundos.

ops

Un entero de 64bits que indica el número total de operaciones realizadas en la colección desde el inicio.

histogram

Una matriz de documentos incrustados, cada uno representando un rango de latencia. Cada documento cubre el doble del rango del documento anterior. Para valores inferiores, entre 2048 microsegundos y aproximadamente 1 segundo, el histograma incluye semitonos.

Este campo solo existe si se utiliza la opción latencyStats: { histograms: true }. Los rangos vacíos con un valor count igual a cero no se incluyen en la salida.

Cada documento contiene los siguientes campos:

Nombre de campo

Descripción

micros

Un entero de 64bits que proporciona el límite de tiempo inferior inclusivo del rango de latencia actual en microsegundos.

El rango del documento abarca entre el valor micros del documento anterior, exclusivo, y el valor micros de este documento, inclusivo.

count

Un entero de 64bits que indica el número de operaciones con latencia menor o igual a micros.

Por ejemplo, si collStats devuelve el siguiente histograma:

histogram: [
{ micros: NumberLong(0), count: NumberLong(10) },
{ micros: NumberLong(2), count: NumberLong(1) },
{ micros: NumberLong(4096), count: NumberLong(1) },
{ micros: NumberLong(16384), count: NumberLong(1000) },
{ micros: NumberLong(49152), count: NumberLong(100) }
]

Esto indica que había:

  • 10 operaciones que toman 2 microsegundo o menos

  • 1 operación en el rango [2, 4) microsegundos

  • 1 operación en el rango [4096, 6144) microsegundos

  • 1000 operaciones en el rango [16384, 24576) microsegundos

  • 100 operaciones en el rango [49152, 65536) microsegundos

[1]
  • La notación del símbolo ( en esta página significa que el valor es exclusivo.
  • La notación del símbolo ] en esta página significa que el valor es inclusivo.

Por ejemplo, si ejecuta $collStats con la opción latencyStats: {} en una colección matrices:

db.matrices.aggregate( [ { $collStats: { latencyStats: { histograms: true } } } ] )

Esta consulta devuelve un resultado similar al siguiente:

{ "ns" : "test.matrices",
"host" : "mongo.example.net:27017",
"localTime" : ISODate("2017-10-06T19:43:56.599Z"),
"latencyStats" :
{ "reads" :
{ "histogram" : [
{ "micros" : NumberLong(16),
"count" : NumberLong(3) },
{ "micros" : NumberLong(32),
"count" : NumberLong(1) },
{ "micros" : NumberLong(128),
"count" : NumberLong(1) } ],
"latency" : NumberLong(264),
"ops" : NumberLong(5) },
"writes" :
{ "histogram" : [
{ "micros" : NumberLong(32),
"count" : NumberLong(1) },
{ "micros" : NumberLong(64),
"count" : NumberLong(3) },
{ "micros" : NumberLong(24576),
"count" : NumberLong(1) } ],
"latency" : NumberLong(27659),
"ops" : NumberLong(5) },
"commands" :
{ "histogram" : [
{
"micros" : NumberLong(196608),
"count" : NumberLong(1)
}
],
"latency" : NumberLong(0),
"ops" : NumberLong(0) },
"transactions" : {
"histogram" : [ ],
"latency" : NumberLong(0),
"ops" : NumberLong(0)
}
}
}

Es posible $lookup que algunas operaciones de alta latencia no generen un registro de consultas lentas para la colección externa. Esto puede ocurrir porque los registros de consultas lentas corresponden a operaciones reportadas en el generador de perfiles de base de datos, mientras que las métricas de latencia solo se incrementan cuando se adquiere un bloqueo de colección.

Si la consulta $lookup en un fragmento puede realizar una lectura local, la consulta $lookup no registra una operación independiente para consultar la colección externa. Una lectura local se refiere a cuando la consulta en la colección externa se dirige únicamente al mismo fragmento donde se ejecuta la operación actual. Como resultado, la consulta $lookup aumenta las métricas de latencia y el número de operaciones de $collStats, pero no genera un registro de consultas lentas para la colección externa.

El documento incrustado storageStats solo existe en la salida si especifica la opción storageStats.

El contenido de este documento depende del motor de almacenamiento utilizado.Consulte la sección "Resultados" para obtener una referencia sobre este documento.

Por ejemplo, si ejecuta $collStats con la storageStats: {} opción en una matrices colección utilizando el motor de almacenamiento WiredTiger:

db.matrices.aggregate( [ { $collStats: { storageStats: { } } } ] )

Esta consulta devuelve un resultado similar al siguiente:

{
"ns" : "test.matrices",
"host" : "mongo.example.net:27017",
"localTime" : ISODate("2020-03-06T01:44:57.437Z"),
"storageStats" : {
"size" : 608500363,
"count" : 1104369,
"avgObjSize" : 550,
"storageSize" : 352878592,
"freeStorageSize" : 2490380,
"capped" : false,
"wiredTiger" : {
...
},
"nindexes" : 2,
"indexDetails" : {
...
},
"indexBuilds" : [ // Starting in MongoDB 4.2
"_id_1_abc_1"
],
"totalIndexSize" : 260337664,
"totalSize" : 613216256,
"indexSizes" : {
"_id_" : 9891840,
"_id_1_abc_1" : 250445824
},
"scaleFactor" : 1 // Starting in MongoDB 4.2
}
}

Consulte Salida para obtener una referencia sobre este documento.

Nota

Índices en curso

A partir de MongoDB 4.2, el valor storageStats devuelto incluye información sobre los índices que se están construyendo. Para más detalles, consulte:

Ejecutar $collStats con la storageStats opción en una vista genera un error.

Nuevo en la versión 3.6.

El campo count solo existe en la salida si especifica la opción count.

Por ejemplo, si ejecuta $collStats con la opción count: {} en una colección matrices:

db.matrices.aggregate( [ { $collStats: { count: { } } } ] )

La consulta devuelve un resultado similar al siguiente:

{
"ns" : "test.matrices",
"host" : "mongo.example.net:27017",
"localTime" : ISODate("2017-10-06T19:43:56.599Z"),
"count" : 1103869
}

Nota

El recuento se basa en los metadatos de la colección, que proporcionan un recuento rápido pero a veces inexacto para los clústeres fragmentados.

El número total de documentos de la colección también está disponible como storageStats.count cuando storageStats: {} se especifica. Para más información, consulte storageStats Documento.

El documento incrustado queryExecStats solo existe en la salida si especifica la opción queryExecStats.

El campo collectionScans contiene un documento incrustado con los siguientes campos:

Nombre de campo
Descripción

total

Un 64entero de bits que indica el número total de consultas que realizaron un análisis de colección. El total incluye las consultas que utilizaron un cursor rastreable y las que no.

nonTailable

Un 64entero de bits que indica la cantidad de consultas que realizaron un escaneo de colección que no utilizó un cursor rastreable.

Por ejemplo, si ejecuta $collStats con la opción queryExecStats: {} en una colección matrices:

db.matrices.aggregate( [ { $collStats: { queryExecStats: { } } } ] )

La consulta devuelve un resultado similar al siguiente:

{
"ns": "test.matrices",
"host": "mongo.example.net:27017",
"localTime": ISODate("2020-06-03T14:23:29.711Z"),
"queryExecStats": {
"collectionScans": {
"total": NumberLong(33),
"nonTailable": NumberLong(31)
}
}
}

$collStats Genera un documento por fragmento al ejecutarse en colecciones fragmentadas. Cada documento de salida contiene un shard campo con el nombre del fragmento al que corresponde.

Por ejemplo, si ejecuta $collStats en una colección fragmentada con la opción count: {} en una colección llamada matrices:

db.matrices.aggregate( [ { $collStats: { count: { } } } ] )

La consulta devuelve un resultado similar al siguiente:

{
"ns" : "test.matrices",
"shard" : "s1",
"host" : "s1-mongo1.example.net:27017",
"localTime" : ISODate("2017-10-06T15:14:21.258Z"),
"count" : 661705
}
{
"ns" : "test.matrices",
"shard" : "s2",
"host" : "s2-mongo1.example.net:27017",
"localTime" : ISODate("2017-10-06T15:14:21.258Z"),
"count" : 442164
}

Tip

Volver

$changeStream

En esta página