Definición
$collStatsNovedad en la versión 3.4.
Devuelve estadísticas sobre una colección o vista.
La etapa
$collStatstiene el siguiente formato de prototipo:{ $collStats: { latencyStats: { histograms: <boolean> }, storageStats: { scale: <number> }, count: {}, queryExecStats: {} } } La etapa
$collStatsacepta un documento de argumentos con los siguientes campos opcionales:Nombre de campoDescripciónlatencyStatsAgregar estadísticas de latencia al documento de retorno.
latencyStats.histogramsSe agrega 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.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 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 en la colección al documento de retorno.
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.
See
countcampoNovedad en la versión 3.6.
queryExecStatsAgrega 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,
$collStatsgenera un único documento. Para una colección particionada,$collStatsproduce un documento por partición. 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.Novedad en la versión 3.6.
hostEl hostname y puerto del proceso
mongodque produjo el documento de salida.Novedad en la versión 3.6.
localTimeLa hora actual en el servidor de MongoDB, expresada en milisegundos UTC desde la Unix epoch.
latencyStatsEstadísticas relacionadas con la latencia de solicitudes para una colección o vista. Consulta
latencyStatsDocumento para obtener detalles sobre este documento.Solo está presente cuando se especifica la opción
latencyStats: {}.storageStatsEstadísticas relacionadas con el motor de almacenamiento de una colección. Consulta el
storageStatsDocumento para obtener detalles sobre este documento.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).
Solo está presente cuando se especifica la opción
storageStats.Devuelve un error si se aplica a un vista.
countEl 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.queryExecStatsEstadí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.
Comportamiento
$collStats debe ser la primera etapa en un pipeline de agregación, de lo contrario el pipeline devuelve un error.
Transacciones
$collStats no se permite en las transacciones.
latencyStats Documento
El latencyStats documento incrustado solo existe en la salida si especificas la opción latencyStats.
Nombre de campo | Descripción |
|---|---|
| Estadísticas de latencia para solicitudes de lectura. |
| Estadísticas de latencia para solicitudes de guardado. |
| 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 | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Un número entero de 64 bits que indica la latencia total combinada en microsegundos. | |||||||||||||
| Un número entero de 64 bits que indica el número total de operaciones realizadas en la colección desde el inicio. | |||||||||||||
| 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 Cada documento tiene los siguientes campos:
Por ejemplo, si Esto indica que hubo:
|
| [1] |
|
Por ejemplo, si ejecutas $collStats con la opción latencyStats: {} en una colección matrices:
db.matrices.aggregate( [ { $collStats: { latencyStats: { histograms: true } } } ] )
Esta query se muestra 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) } } }
Operaciones de alta latencia de $lookup
Algunas operaciones de $lookup con alta latencia pueden no generar un registro de consultas lentas para la colección externa. Esto puede ocurrir porque los registros de query lentas corresponden a operaciones que se informan en el perfilador 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.
storageStats Documento
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.
Por ejemplo, si se ejecuta $collStats con la opción storageStats: {} en una colección matrices utilizando el motor de almacenamiento WiredTiger:
db.matrices.aggregate( [ { $collStats: { storageStats: { } } } ] )
Esta query se muestra 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 Output como referencia sobre este documento.
Nota
Índices en curso
A partir de MongoDB 4.2, el storageStats devuelto incluye información sobre los índices que se están construyendo. Para obtener más detalles, consulta:
Realizar $collStats con la opción storageStats en una vista resulta en un error.
count Campo
Novedad en la versión 3.6.
El campo count solo existe en la salida si especificas la opción count.
Por ejemplo, si ejecutas $collStats con la opción count: {} en una colección matrices:
db.matrices.aggregate( [ { $collStats: { count: { } } } ] )
La query 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 impreciso para los clústeres shardados.
El número total de documentos en la colección también está disponible como storageStats.count cuando se especifica storageStats: {}. Para obtener más información, consulta el DocumentostorageStats.
queryExecStats Documento
El queryExecStats documento incrustado solo existe en la salida si especificas la opción queryExecStats.
El campo collectionScans contiene un documento incrustado que incluye los siguientes campos:
Nombre de campo | Descripción |
|---|---|
| Un entero de 64 bits que indica el número total de queries que realizaron un escaneo de colección. El total consiste en query s que utilizaron y no utilizaron un cursor con seguimiento. |
| Un entero de 64 bits que indica el número de queries que realizaron un escaneo de colección que no usó un cursor con seguimiento. |
Por ejemplo, si ejecutas $collStats con la opción queryExecStats: {} en una colección matrices:
db.matrices.aggregate( [ { $collStats: { queryExecStats: { } } } ] )
La query 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 en colecciones shard
$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 query 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 }