$collStats (aggregation)
Definition
New in version 3.4.
Returns statistics regarding a collection or view.
The $collStats
stage has the following prototype form:
- {
- $collStats:
- {
- latencyStats: { histograms: <boolean> },
- storageStats: { scale: <number> },
- count: {}
- }
- }
The $collStats
stage accepts an argument document with thefollowing optional fields:
Field NameDescriptionlatencyStats
Adds latency statistics to thereturn document.latencyStats.histograms
Adds latency histogram information to the embedded documentsin latencyStats
if true
.storageStats
Adds storage statistics to thereturn document.
Specify an empty document (i.e.
storageStats: {}
) touse the default scale factor of 1 for the various sizedata. Scale factor of 1 displays the returned sizes inbytes.Specify the scale factor (i.e.
storageStats: { scale:<number> }
) to use the specified scale factor for thevarious size data. For example, to display kilobytes ratherthan bytes, specify a scale value of 1024.
If you specify a non-integer scale factor, MongoDB uses the integerpart of the specified factor. For example, if you specify a scalefactor of 1023.999
, MongoDB uses 1023
as the scale factor.
The scale factor does not affect those sizes that specifythe unit of measurement in the field name, such as "bytescurrently in the cache"
.count
Adds the total number of documents in the collection to thereturn document.
Note
The count is based on the collection’s metadata, whichprovides a fast but sometimes inaccurate count for shardedclusters.
See count Field
New in version 3.6.
For a collection in a replica set or anon-sharded collection ina cluster, $collStats
outputs a single document. For asharded collection,$collStats
outputs one document per shard. The output documentincludes the following fields:
Field NameDescriptionns
The namespace of the requested collection or view.shard
The name of the shard the output document corresponds to.
Only present when $collStats
runs on a sharded cluster. Bothsharded and non-sharded collectionswill produce this field.
New in version 3.6.
host
The hostname and port of the mongod process which producedthe output document.
New in version 3.6.
localTime
The current time on the MongoDB server, expressed as UTCmilliseconds since the Unix epoch.latencyStats
A collection of statistics related to request latency for acollection or view. SeelatencyStats Document for details on this document.
Only present when the latencyStats: {}
option is specified.storageStats
A collection of statistics related to a collection’s storageengine. See storageStats Document for details on thisdocument.
The various size data is scaled by the specified factor (withthe exception of those sizes that specify the unit ofmeasurement in the field name).
Only present when the storageStats
option is specified.
Returns an error if applied to a view.count
The total number of documents in the collection. This data isalso available in storageStats.count
.
Note
The count is based on the collection’s metadata, whichprovides a fast but sometimes inaccurate count for shardedclusters.
Only present when the count: {}
option is specified. Returnsan error if applied to a view.
Behavior
$collStats
must be the first stage in an aggregation pipeline, orelse the pipeline returns an error.
Transactions
$collStats
is not allowed in transactions.
latencyStats Document
The latencyStats
embedded document only exists in the output ifyou specify the latencyStats
option.
Field Name | Description |
---|---|
reads | Latency statistics for read requests. |
writes | Latency statistics for write requests. |
commands | Latency statistics for database commands. |
Each of these fields contains an embedded document bearing thefollowing fields:
Field Name | Description | ||||||
---|---|---|---|---|---|---|---|
latency | A 64-bit integer giving the total combinedlatency in microseconds. | ||||||
ops | A 64-bit integer giving the total number ofoperations performed on the collection since startup. | ||||||
histogram | An array of embedded documents, each representing a latency range.Each document covers twice the previous document’s range. Forupper values between 2048 microseconds and roughly 1 second,the histogram includes half-steps.This field only exists given thelatencyStats: { histograms: true } option. Empty ranges witha zero count are omitted from the output.Each document bears the following fields:
For example, if
This indicates that there were:
|
For example, if you run $collStats
with the latencyStats: {}
optionon a matrices
collection:
- db.matrices.aggregate( [ { $collStats: { latencyStats: { histograms: true } } } ] )
This query returns a result similar to the following:
- { "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)
- }
- }
- }
storageStats Document
The storageStats
embedded document only exists in the output if youspecify the storageStats
option.
The contents of this document are dependent on the storage engine in use.See Output for a reference on this document.
For example, if you run $collStats
with the storageStats: {}
option on a matrices
collection using the WiredTiger Storage Engine:
- db.matrices.aggregate( [ { $collStats: { storageStats: { } } } ] )
This query returns a result similar to the following:
- {
- "ns" : "test.matrices",
- "host" : mongo.example.net:27017",
- "localTime" : ISODate("2017-10-06T19:43:56.599Z"),
- "storageStats" : {
- "size" : 608500363,
- "count" : 1104369,
- "avgObjSize" : 550,
- "storageSize" : 352878592,
- "capped" : false,
- "wiredTiger" : {
- ...
- },
- "nindexes" : 2,
- "indexDetails" : {
- ...
- },
- "indexBuilds" : [ // Starting in MongoDB 4.2
- "_id_1_abc_1"
- ],
- "totalIndexSize" : 260337664,
- "indexSizes" : {
- "_id_" : 9891840,
- "_id_1_abc_1" : 250445824
- },
- "scaleFactor" : 1 // Starting in MongoDB 4.2
- }
- }
Performing $collStats
with the storageStats
option on aview results in an error.
count Field
New in version 3.6.
The count
field only exists in the output if you specify thecount
option.
For example, if you run $collStats
with the count: {}
option ona matrices
collection:
- db.matrices.aggregate( [ { $collStats: { count: { } } } ] )
The query returns a result similar to the following:
- {
- "ns" : "test.matrices",
- "host" : mongo.example.net:27017",
- "localTime" : ISODate("2017-10-06T19:43:56.599Z"),
- "count" : 1103869
- }
Note
The count is based on the collection’s metadata, which provides afast but sometimes inaccurate count for sharded clusters.
The total number of documents in the collection is also available asstorageStats.count
when storageStats: {}
is specified. For moreinformation, see storageStats Document.
$collStats on Sharded Collections
$collStats
outputs one document per shard when run onsharded collections. Eachoutput document contains a shard
field with the name of the shardthe document corresponds to.
For example, if you run $collStats
on a sharded collection with thecount: {}
option on a collection named matrices
:
- db.matrices.aggregate( [ { $collStats: { count: { } } } ] )
The query returns a result similar to the following:
- {
- "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
- }
See also