Definición
$collStatsDevuelve estadísticas sobre una colección o vista.
La etapa
$collStatstiene la siguiente forma de prototipo:{ $collStats: { latencyStats: { histograms: <boolean> }, storageStats: { scale: <number> }, count: {}, queryExecStats: {} } } La
$collStatsetapa acepta un documento de argumento con los siguientes campos opcionales:Nombre de campoDescripciónlatencyStatsAñade Estadísticas de latencia al documento de retorno.
latencyStats.histogramsAgrega información del histograma de latencia a los documentos incrustados en
latencyStatssitrue.storageStatsAgrega 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 utiliza1023como 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".
countAgrega 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 campo de conteo
queryExecStatsAgrega 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,
$collStatsgenera un solo documento. Para una colección fragmentada,$collStatsgenera un documento por fragmento. El documento de salida incluye los siguientes campos:Nombre de campoDescripciónnsEl namespace de la colección o vista solicitada.
shardEl nombre de la partición al que corresponde el documento de salida.
Solo aparece cuando
$collStatsse ejecuta en un clúster particionado. Tanto las colecciones particionadas como las no particionadas producirán este campo.hostEl nombre de host y el puerto del proceso
mongodque produjo el documento de salida.localTimeLa hora actual en el servidor MongoDB, expresada en milisegundos UTC desde la época UNIX.
latencyStatsEstadísticas relacionadas con la latencia de las solicitudes de una colección o vista. Consulte el documento "Estadísticas de latencia" para obtener más información.
Sólo está presente cuando se especifica la opción
latencyStats: {}.storageStatsEstadísticas relacionadas con el motor de almacenamiento de una colección. Consulte el documento "storageStats" para obtener más 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.
countNú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 presente cuando se especifica la opción
count: {}. Devuelve un error si se aplica a una vista.queryExecStatsEstadí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.
Comportamiento
$collStats debe ser la primera etapa de una secuencia de agregación, de lo contrario la secuencia devuelve un error.
Precisión después de un apagado inesperado
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:
Redacción
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 solo el campourl.
Transacciones
$collStats No está permitido en las transacciones.
Salida
latencyStats Document
El documento incrustado latencyStats solo existe en la salida si especifica la opción latencyStats.
Nombre de campo | Descripción |
|---|---|
| Estadísticas de latencia para solicitudes de lectura. |
| Estadísticas de latencia para solicitudes de escritura. |
| Estadísticas de latencia para comandos de bases de datos. |
| 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 | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| La latencia total, en microsegundos. | |||||||||||||
| El número total de operaciones realizadas en la colección desde el inicio. | |||||||||||||
| 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 Cada documento tiene los siguientes campos:
Por ejemplo, si Esto indica que había 1[]:
|
| [1] |
|
Operaciones $lookup de alta latencia
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.
Documento de estadísticas de almacenamiento
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.
Salida de storageStats sobre colecciones de series temporales
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 obtener más información sobre los campos devueltos en el timeseries: {} documento, consulte bucketCatalog.
Ejecutar $collStats con la opción storageStats en una vista genera un error.
Campo de conteo
El campo count solo existe en la salida si especifica 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 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 obtener más información, consulte el documento storageStats.
queryExecStats Document
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 |
|---|---|
| El número total de queries que realizaron un escaneo de colección. |
| La cantidad de consultas que realizaron un escaneo de recopilación, pero no utilizaron un cursor rastreable. |
Ejemplos
estadísticas de latencia
Si ejecuta $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) } } }
storageStats
Si ejecuta $collStats con la storageStats: {} opción en una matrices colección 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' }
Estadísticas de almacenamiento sobre colecciones de series temporales
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.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 valor storageStats devuelto incluye información sobre los índices que se están construyendo. Para más detalles, consulte:
count
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 }
queryExecStats
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": Long(33), "nonTailable": Long(31) } } }
$collStats en colecciones fragmentadas
$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 }
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.
estadísticas de latencia
El siguiente ejemplo crea y ejecuta una $collStats etapa de canalización con la opción latencyStats:
const pipeline = [ { $collStats: { latencyStats: {histograms: true} } } ]; const cursor = collection.aggregate(pipeline); return cursor;
storageStats
El siguiente ejemplo crea y ejecuta una $collStats etapa de canalización con la opción storageStats:
const pipeline = [{ $collStats: { storageStats: {} } }]; const cursor = collection.aggregate(pipeline); return cursor;
Estadísticas de almacenamiento sobre colecciones de series temporales
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;
count
El siguiente ejemplo ejecuta una $collStats etapa de canalización con la opción de conteo en una colección:
const pipeline = [{ $collStats: { count: {} } }]; const cursor = collection.aggregate(pipeline); return cursor;
queryExecStats
El siguiente ejemplo crea y ejecuta una $collStats etapa de canalización 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.