Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

$collStats (fase de agregación)

$collStats

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

La etapa $collStats tiene el siguiente formato 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

Agregar estadísticas de latencia al documento de retorno.

latencyStats.histograms

Se 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.

  • Especifica el factor de escala (es decir, storageStats: { scale: <number> }) para utilizar el factor de escala especificado para los diversos datos de tamaño. Por ejemplo, para mostrar kilobytes en lugar de bytes, especifica 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 impreciso para los clústeres shardados.

Ver campo count

queryExecStats

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

Para una colección en un set de réplicas o una colección no particionada en un clúster, $collStats genera un único documento. Para una colección particionada, $collStats produce un documento por partición. 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.

host

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

localTime

La hora actual en el servidor de MongoDB, expresada en milisegundos UTC desde la Unix epoch.

latencyStats

Estadísticas relacionadas con la latencia de solicitudes para una colección o vista. Consulte el Documento latencyStats para más detalles sobre este documento.

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 "storageStats" para obtener más información.

Los datos de diversos tamaños se escalan por 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

El número total de documentos en la colección. Esta información también está disponible en storageStats.count.

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

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

queryExecStats

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

Solo presente cuando se especifica la opción queryExecStats: {}. 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.

Después de un apagado incorrecto de un mongod usando el motor de almacenamiento Wired Tiger, las estadísticas de tamaño y conteo informadas por $collStats pueden ser inexactas.

La cantidad de deriva depende del número de operaciones de inserción, actualización o eliminación realizadas entre el último punto de control y el apagado no limpio. Los puntos de control suelen ocurrir cada 60 segundos. Sin embargo, las instancias mongod que se ejecutan con configuraciones --syncdelay no por defecto pueden tener puntos de control más o menos frecuentes.

Ejecuta validate en cada colección en el mongod para restaurar las estadísticas después de un apagado no limpio.

Después de un apagado no limpio:

  • validate actualiza el estadística de recuento en la collStats salida con el valor más reciente.

  • Otras estadísticas como el número de documentos insertados o eliminados en la salida collStats son estimaciones.

Al usar Queryable Encryption, $collStats la salida oculta cierta información para colecciones cifradas:

  • La salida omite "queryExecStats"

  • La salida omite "latencyStats"

  • La salida redacta "WiredTiger", si está presente, para incluir sólo el campo url.

$collStats no se permite en las transacciones.

El latencyStats documento incrustado solo existe en la salida si especificas 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.

transactions

Estadísticas de latencia para transacciones 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 64 bits que proporciona la latencia combinada total en microsegundos.

ops

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

histogram

Un arreglo de documentos incrustados, cada uno representando un rango de latencia. Cada documento cubre el doble del rango del documento anterior. Para valores más bajos entre 2048 microsegundos y aproximadamente 1 segundo, el histograma incluye medias pasos.

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 tiene 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 64 bits que muestra el número de operaciones con una latencia menor o igual a micros.

Por ejemplo, si collStats devuelve el siguiente histograma:

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

Esto indica que hubo [1]:

  • 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.

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 $lookup query en una partición puede realizar una lectura local, el $lookup no registra una operación separada para consultar la colección externa. Una lectura local se refiere a cuando la query en la colección foránea tiene como objetivo solo la misma partición donde se está ejecutando la operación actual. Como resultado, la operación $lookup aumenta las métricas de latencia y los recuentos de operaciones de $collStats, pero no genera un registro de consultas lentas para la colección externa.

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

El contenido de este documento depende del motor de almacenamiento que se utilice. Consulta Output como referencia para este documento.

Cuando ejecutas $collStats en una colección de series de tiempo con la opción storageStats: {}, el resultado incluye datos de series de tiempo.

Para aprender más sobre los campos devueltos en el documento timeseries: {}, consulta bucketCatalog.

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

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

Nota

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

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

El documento incrustado queryExecStats solo existe en la salida si se especifica la opción queryExecStats. Incluye un documento incrustado collectionScans con los siguientes campos:

Nombre de campo
Descripción

total

El número total de queries que realizaron un escaneo de colección.

nonTailable

El número de consultas que realizaron un escaneo de colección, pero no utilizaron un cursor con seguimiento.

Si ejecutas $collStats con la opción latencyStats: {} en una colección matrices:

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

La 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" : Long(16),
"count" : Long(3) },
{ "micros" : Long(32),
"count" : Long(1) },
{ "micros" : Long(128),
"count" : Long(1) } ],
"latency" : Long(264),
"ops" : Long(5) },
"writes" :
{ "histogram" : [
{ "micros" : Long(32),
"count" : Long(1) },
{ "micros" : Long(64),
"count" : Long(3) },
{ "micros" : Long(24576),
"count" : Long(1) } ],
"latency" : Long(27659),
"ops" : Long(5) },
"commands" :
{ "histogram" : [
{
"micros" : Long(196608),
"count" : Long(1)
}
],
"latency" : Long(0),
"ops" : Long(0) },
"transactions" : {
"histogram" : [ ],
"latency" : Long(0),
"ops" : Long(0)
}
}
}

Si ejecutas $collStats con la opción storageStats: {} en una colección matrices utilizando el Motor de almacenamiento WiredTiger:

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

La consulta devuelve un resultado similar al siguiente:

{
localTime : 2020-03-06T01:44:57.437Z,
storageStats: {
size: 608500363,
count: 1104369,
avgObjectSize: 550,
storageSize: 4096,
freeStorageSize: 2490380,
capped: false,
wiredTiger : {
...
},
nindexes : 2,
indexDetails : {
...
},
indexBuilds: [
_id_1_abc_1
],
totalIndexSize: 260337664,
indexSizes: {
_id_ : 9891840,
_id_1_abc_1 : 250445824
},
totalSize: 613216256,
scaleFactor : 1
},
host : 'mongo.example.net:27017',
ns : 'test.matrices'
}

El siguiente comando ejecuta $collStats con la storageStats: {} opción en una weather colección de series de tiempo utilizando el motor de almacenamiento WiredTiger y filtra solo los datos de series de tiempo:

db.weather.aggregate( [ { $collStats: { storageStats: { } } } ] ).toArray()[0].storageStats.timeseries

La query devuelve un resultado similar al siguiente, que incluye datos de series de tiempo para uso diagnóstico interno:

{
bucketsNs: 'test.system.buckets.weather',
bucketCount: 12,
avgBucketSize: 300,
numActiveBuckets: 1,
numBucketInserts: 12,
numBucketUpdates: 0,
numBucketsOpenedDueToMetadata: 1,
numBucketsClosedDueToCount: 0,
numBucketsClosedDueToSchemaChange: 0,
numBucketsClosedDueToSize: 0,
numBucketsClosedDueToTimeForward: 11,
numBucketsClosedDueToMemoryThreshold: 0,
numCommits: 12,
numMeasurementsGroupCommitted: 0,
numWaits: 0,
numMeasurementsCommitted: 12,
avgNumMeasurementsPerCommit: 1,
numBucketsClosedDueToReopening: 0,
numBucketsArchivedDueToMemoryThreshold: 0,
numBucketsArchivedDueToTimeBackward: 0,
numBucketsReopened: 0,
numBucketsKeptOpenDueToLargeMeasurements: 0,
numBucketsClosedDueToCachePressure: 0,
numBucketsFrozen: 0,
numCompressedBucketsConvertedToUnsorted: 0,
numBucketsFetched: 0,
numBucketsQueried: 0,
numBucketFetchesFailed: 0,
numBucketQueriesFailed: 1,
numBucketReopeningsFailed: 0,
numDuplicateBucketsReopened: 0
}

Nota

Índices en curso

El objeto storageStats devuelto incluye información sobre los índices que se están compilando. Para obtener más detalles, consulta:

Si ejecutas $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
}

Si ejecutas $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": Long(33),
"nonTailable": Long(31)
}
}
}

$collStats produce un documento por partición cuando se ejecuta en colecciones particionadas. Cada documento de salida contiene un campo shard con el nombre de la partición a la que corresponde el documento.

Por ejemplo, si ejecutas $collStats en una colección particionada 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
}

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

Los siguientes ejemplos demuestran cómo utilizar las opciones disponibles para la etapa $collStats.

El siguiente ejemplo crea y ejecuta una etapa de pipeline de $collStats con la opción latencyStats:

const pipeline = [
{
$collStats: {
latencyStats: {histograms: true}
}
}
];
const cursor = collection.aggregate(pipeline);
return cursor;

El siguiente ejemplo crea y ejecuta una etapa de pipeline $collStats con la opción storageStats:

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

El siguiente ejemplo crea y ejecuta una $collStats etapa de canalización con la opción storageStats en una colección de series de tiempo y filtra solo datos de series de tiempo:

const pipeline = [{ $collStats: { storageStats: {} } }];
const cursor = collection.aggregate(pipeline);
const timeSeriesStats = resultsTimeSeries[0].storageStats.timeseries;
return timeSeriesStats;

El siguiente ejemplo ejecuta una etapa de pipeline $collStats con la opción count en una colección:

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

El siguiente ejemplo crea y ejecuta una etapa de pipeline $collStats con la opción queryExecStats:

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

Nota

Colecciones fragmentadas

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

Tip

Volver

$changeStreamSplitLargeEvent

En esta página