Definição
$collStats
Retorna estatísticas sobre uma coleção ou visualização.
O estágio
$collStats
tem o seguinte formato de protótipo:{ $collStats: { latencyStats: { histograms: <boolean> }, storageStats: { scale: <number> }, count: {}, queryExecStats: {} } } O estágio
$collStats
aceita um documento de argumento com os seguintes campos opcionais:Nome do campoDescriçãolatencyStats
Adiciona estatísticas de latência ao documento de retorno.
latencyStats.histograms
Adiciona informações de histograma de latência aos documentos incorporados em
latencyStats
setrue
.storageStats
Adiciona estatísticas de armazenamento ao documento de retorno.
Especifique um documento vazio (ou seja,
storageStats: {}
) para usar o fator de escala padrão de 1 para os vários dados de tamanho. O fator de escala de 1 exibe os tamanhos retornados em bytes.Especifique o fator de escala (ou seja,
storageStats: { scale: <number> }
) para utilizar o fator de escala especificado para os vários dados de tamanho. Por exemplo, para exibir kilobytes em vez de bytes, especifique um valor de escala de 1024.Se você especificar um fator de escala não inteiro, o MongoDB utilizará a parte inteira do fator especificado. Por exemplo, se você especificar um fator de escala de
1023.999
, MongoDB utilizará1023
como o fator de escala.O fator de escala não afeta os tamanhos que especificam a unidade de medida no nome do campo, como
"bytes currently in the cache"
.
count
Adiciona o número total de documentos na collection ao documento de retorno.
A contagem é baseada nos metadados da collection, que fornecem uma contagem rápida, mas às vezes imprecisa para clusters fragmentados.
queryExecStats
Adiciona estatísticas de execução da consulta ao documento de retorno .
Para uma collection em um conjunto de réplicas ou uma collection não fragmentada em um cluster,
$collStats
gera um único documento. Para uma collection fragmentada,$collStats
gera um documento por shard. O documento de saída inclui os seguintes campos:Nome do campoDescriçãons
O namespace da collection ou visualização solicitada.
shard
O nome do shard ao qual o documento de saída corresponde.
Somente está presente quando
$collStats
executa em um cluster fragmentado. As collections fragmentadas e não fragmentadas produzirão este campo.host
O nome do host e a porta do processo
mongod
que produziu o documento de saída.localTime
A hora atual no servidor MongoDB, expressa em milissegundos UTC desde a época UNIX.
latencyStats
Estatísticas relacionadas à latência de solicitação de uma collection ou visualização. Consulte o Documento latencyStats para obter detalhes sobre este documento.
Presente somente quando a opção
latencyStats: {}
é especificada.storageStats
Estatísticas relacionadas ao mecanismo de armazenamento de uma collection. Consulte o documento storageStats para obter detalhes sobre este documento.
Os dados de vários tamanhos são dimensionados pelo fator especificado (com exceção dos tamanhos que especificam a unidade de medida no nome do campo).
Presente somente quando a opção
storageStats
é especificada.Retorna um erro se aplicada a uma visualização.
count
O número total de documentos na collection. Estes dados também estão disponíveis em
storageStats.count
.A contagem é baseada nos metadados da collection, que fornecem uma contagem rápida, mas às vezes imprecisa para clusters fragmentados.
Presente somente quando a opção
count: {}
é especificada.Retorna um erro se aplicada a uma visualização.queryExecStats
Estatísticas relacionadas à execução da query para a collection.
Presente somente quando a opção
queryExecStats: {}
é especificada.Retorna um erro se aplicada a uma visualização.
Comportamento
$collStats
deve ser o primeiro estágio de um aggregation pipeline, senão o pipeline retorna um erro.
Precisão após Desligamento Inesperado
Depois de um desligamento impróprio de um mongod
usando o mecanismo de armazenamento Wired Tiger, as estatísticas de tamanho e contagem relatadas por $collStats
podem ser imprecisas.
A quantidade de desvio depende do número de operações de inserção, atualização ou exclusão executadas entre o último ponto de verificação e o desligamento não limpo. Os pontos de verificação geralmente ocorrem a cada 60 segundos. No entanto, mongod
instâncias executadas com configurações de --syncdelay
não padrão podem ter pontos de verificação mais ou menos frequentes.
Execute validate
em cada collection no mongod
para restaurar as estatísticas depois de um desligamento impróprio.
Após um desligamento impróprio:
Transações
$collStats
não é permitido em transações.
Saída
latencyStats Document
O documento incorporado latencyStats
só existe na saída caso você especifique a opção latencyStats
.
Nome do campo | Descrição |
---|---|
| Estatísticas de latência para solicitações de leitura. |
| Estatísticas de latência para solicitações de escrita. |
| Estatísticas de latência para comandos de banco de dados. |
Cada um desses campos contém um documento incorporado com os seguintes campos:
Nome do campo | Descrição | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Um número inteiro de 64 bits que informa o total de latência combinada em microssegundos. | |||||||||||||
| Um inteiro de 64 bits que informa o número total de operações realizadas na collection desde a inicialização. | |||||||||||||
| Um array de documentos incorporados, cada um representando uma faixa de latência. Cada documento cobre o dobro da faixa do documento anterior. Para valores mais baixos entre 2048 microssegundos e aproximadamente 1 segundo, o histograma inclui meios-passos. Este campo só existe com a opção Cada documento contém os seguintes campos:
Por exemplo, se
Isso indica que houve:
|
[1] |
|
Operações $lookup de alta latência
Algumas operações de alta latência $lookup
podem não gerar um registro de query lento para a coleção externa. Isso pode ocorrer porque os logs de queries lentas correspondem a operações relatadas no profiler de banco de dados, enquanto as métricas de latência incrementam somente quando uma bloqueio de collection é adquirida.
Se a query do $lookup
em um shard puder executar uma leitura local, o $lookup
não registrará uma operação separada para query da collection externa. Uma leitura local refere-se a quando a query na collection externa tem como alvo apenas o mesmo shard em que a operação atual está sendo executada. Como resultado, a operação $lookup
aumenta as métricas de latência $collStats
e as contagens de operações, mas não gera um registro de query lento para a collection externa.
Documento storageStats
O documento incorporado storageStats
só existe na saída caso você especifique a opção storageStats
.
O conteúdo deste documento depende do mecanismo de armazenamento em uso. Consulte Saída para obter uma referência sobre este documento.
saída storageStats em Coleções de séries temporais
Quando você executa $collStats
em uma coleção de séries temporais com a opção storageStats: {}
, a saída inclui dados de séries temporais.
Para saber mais sobre os campos retornados no documento timeseries: {}
, consulte bucketCatalog.
Executar $collStats
com a opção storageStats
em uma visualização resulta em um erro.
campo de contagem
O campo count
só existirá na saída se você especificar a opção count
.
Observação
A contagem é baseada nos metadados da collection, que fornecem uma contagem rápida, mas às vezes imprecisa para clusters fragmentados.
O número total de documentos na collection também está disponível como storageStats.count
quando storageStats: {}
é especificado. Para obter mais informações, consulte o documento storageStats.
queryExecStats Document
O documento incorporado queryExecStats
só existe na saída caso você especifique a opção queryExecStats
. Inclui um documento incorporado do collectionScans
com os seguintes campos:
Nome do campo | Descrição |
---|---|
| O número total de queries que executaram uma verificação de collection. |
| O número de queries que executaram uma verificação de collection, mas não usaram um cursor persistente. |
Exemplos
estatísticas de latência
Se você executar $collStats
com a opção latencyStats: {}
em uma collection matrices
:
db.matrices.aggregate( [ { $collStats: { latencyStats: { histograms: true } } } ] )
A query retorna um resultado semelhante ao seguinte:
{ "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
Se você executar o $collStats
com a opção storageStats: {}
em uma collection matrices
utilizando o Mecanismo de armazenamento WiredTiger:
db.matrices.aggregate( [ { $collStats: { storageStats: { } } } ] )
A query retorna um resultado semelhante ao seguinte:
{ "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 }
storageStats em Coleções de Séries Temporais
O comando a seguir executa $collStats
com a opção storageStats: {}
em uma coleção de séries temporais weather
usando o Mecanismo de armazenamento WiredTiger e filtra somente dados de séries temporais:
db.weather.aggregate( [ { $collStats: { storageStats: { } } } ] ).toArray()[0].storageStats.timeseries
A query retorna um resultado semelhante ao seguinte, que inclui dados de série temporal para uso de 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 }
Observação
Índices em andamento
O storageStats
retornado inclui informações sobre índices em construção. Para obter detalhes, consulte:
contar
Se você executar $collStats
com a opção count: {}
em uma collection matrices
:
db.matrices.aggregate( [ { $collStats: { count: { } } } ] )
A query retorna um resultado semelhante ao seguinte:
{ "ns" : "test.matrices", "host" : "mongo.example.net:27017", "localTime" : ISODate("2017-10-06T19:43:56.599Z"), "count" : 1103869 }
queryExecStats
Se você executar $collStats
com a opção queryExecStats: {}
em uma collection matrices
:
db.matrices.aggregate( [ { $collStats: { queryExecStats: { } } } ] )
A query retorna um resultado semelhante ao seguinte:
{ "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 em collections fragmentadas
$collStats
gera um documento por fragmento quando executado em collections fragmentadas. Cada documento de saída contém um campo shard
com o nome do fragmento ao qual o documento corresponde.
Por exemplo, se você executar $collStats
em uma collection fragmentada com a opção count: {}
em uma collection denominada matrices
:
db.matrices.aggregate( [ { $collStats: { count: { } } } ] )
A query retorna um resultado semelhante ao seguinte:
{ "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 usar o driver Node.js do MongoDB para adicionar um estágio $collStats
a um pipeline de agregação , use o operador $collStats
em um objeto de pipeline.
Os exemplos seguintes demonstram como utilizar as opções disponíveis para o estágio $collStats
.
estatísticas de latência
O exemplo a seguir cria e executa um estágio de pipeline $collStats
com a opção latencyStats:
const pipeline = [ { $collStats: { latencyStats: {histograms: true} } } ]; const cursor = collection.aggregate(pipeline); return cursor;
storageStats
O exemplo a seguir cria e executa um estágio de pipeline $collStats
com a opção storageStats:
const pipeline = [{ $collStats: { storageStats: {} } }]; const cursor = collection.aggregate(pipeline); return cursor;
storageStats em Coleções de Séries Temporais
O exemplo a seguir cria e executa um estágio de pipeline $collStats
com a opção storageStats em uma coleção de séries temporais e filtros somente para dados de séries temporais:
const pipeline = [{ $collStats: { storageStats: {} } }]; const cursor = collection.aggregate(pipeline); const timeSeriesStats = resultsTimeSeries[0].storageStats.timeseries; return timeSeriesStats;
contar
O exemplo a seguir executa um estágio de pipeline $collStats
com a opção de contagem em uma coleção:
const pipeline = [{ $collStats: { count: {} } }]; const cursor = collection.aggregate(pipeline); return cursor;
queryExecStats
O exemplo a seguir cria e executa um estágio de pipeline $collStats
com a opção queryExecStats:
const pipeline = [{ $collStats: { queryExecStats: {} } }]; const cursor = collection.aggregate(pipeline); return cursor;
Observação
Coleções fragmentadas
$collStats
gera um documento por fragmento quando executado em collections fragmentadas. Cada documento de saída contém um campo de fragmento com o nome do fragmento ao qual o documento corresponde.