$collStats (聚合)
定义
$collStats
返回有关集合或视图的统计信息。
$collStats
阶段具有以下原型形式{ $collStats: { latencyStats: { histograms: <boolean> }, storageStats: { scale: <number> }, count: {}, queryExecStats: {} } } $collStats
阶段接受一个包含以下 可选 字段的参数文档字段名称描述latencyStats
添加延迟统计信息 到返回文档中。latencyStats.histograms
如果true
,则向latencyStats
中嵌入的文档添加延迟直方图信息。storageStats
将 存储统计信息 添加到返回文档。
指定一个空文档(即
storageStats: {}
),以使用各种大小数据的默认比例因子 1。比例因子 1 以字节显示返回的大小。指定比例因子(即
storageStats: { scale: <number> }
),以使用指定的比例因子来表示各种大小数据。例如,要显示千字节而不是字节,请指定比例值为 1024。如果您指定了一个非整数比例因子,MongoDB 使用指定因子的整数部分。例如,如果您指定了一个比例因子为
1023.999
,MongoDB 使用1023
作为比例因子。比例因子不影响那些在字段名称中指定测量单位的尺寸,例如
"当前缓存的字节数"
。
count
queryExecStats
将 查询执行统计 添加到返回的文档中。对于副本集或集群中的非分片集合,非分片集合,
$collStats
输出单个文档。对于 分片集合,$collStats
为每个分片输出一个文档。输出文档包含以下字段字段名称描述ns
请求的集合或视图的 命名空间。shard
输出文档对应的分片名称。
仅在
$collStats
在分片集群上运行时存在。分片和非分片集合都会生成此字段。host
产生输出文档的mongod
进程的主机名和端口号。localTime
MongoDB服务器上的当前时间,以自 UNIX纪元 以来以UTC毫秒表示。latencyStats
与集合或视图请求延迟相关的统计信息。有关此文档的详细信息,请参阅
latencyStats
文档。仅在指定了
latencyStats: {}
选项时存在。storageStats
与集合的存储引擎相关的统计信息。有关此文档的详细信息,请参阅
storageStats
文档。各种大小数据按指定的因子缩放(字段名称中指定测量单位的那些大小除外)。
仅在指定了
storageStats
选项时存在。如果应用于视图,则返回错误。
count
集合中的文档总数。此数据也存在于
storageStats.count
中。计数基于集合的元数据,对于分片集群,这是一个快速但有时不准确的方法。
仅在指定了
count: {}
选项时存在。如果应用于视图,则返回错误。queryExecStats
与集合查询执行相关的统计信息。
仅在指定了
queryExecStats: {}
选项时存在。如果应用于 视图,则返回错误。
行为
$collStats
必须是聚合管道的第一个阶段,否则管道将返回错误。
意外关闭后的精度
使用 mongod
和 Wired Tiger 存储引擎进行不干净的关闭后,大小和计数$collStats
报告的统计信息可能不准确。
漂移量取决于从上次 检查点 到不干净关闭之间执行的插入、更新或删除操作的数量。检查点通常每60秒发生一次。但是,使用非默认 --syncdelay
设置运行的 mongod
实例可能有更频繁或更不频繁的检查点。
在 mongod
上的每个集合上运行 validate
以在不干净的关闭后恢复统计信息。
在不干净的关闭后
红字
当使用 可查询加密 时,$collStats
输出会删除加密集合的某些信息
输出省略了
"queryExecStats"
输出省略了
"latencyStats"
如果存在,输出将删除
"WiredTiger"
,只包括url
字段。
交易
$collStats
在 交易 中不允许使用。
latencyStats
文档
只有在指定了 latencyStats
选项的情况下,latencyStats
嵌入文档才会存在于输出中。
字段名称 | 描述 |
---|---|
读取 | 读取请求的延迟统计信息。 |
写入 | 写入请求的延迟统计信息。 |
命令 | 数据库命令的延迟统计信息。 |
交易 | 数据库交易的延迟统计信息。 |
这些字段中的每个都包含一个嵌入文档,该文档包含以下字段
字段名称 | 描述 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
延迟 | 一个64位整数,表示总的组合延迟(微秒)。 | |||||||||||||
操作 | 一个64位整数,表示自启动以来在集合上执行的总操作数。 | |||||||||||||
直方图 | 嵌入文档的数组,每个文档表示一个延迟范围。每个文档覆盖上一个文档范围的两倍。对于介于2048微秒和大约1秒之间的较低值,直方图包括半步长。 只有当指定了 每个文档都包含以下字段
例如,如果
这表示有 [1]
|
[1] |
|
例如,如果您在一个 matrices
集合上使用 latencyStats: {}
选项运行 $collStats
db.matrices.aggregate( [ { $collStats: { latencyStats: { histograms: true } } } ] )
此查询返回的结果类似于以下
{ "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
文档
只有当您指定 storageStats
选项时,storageStats
嵌入式文档才存在于输出中。
此文档的内容取决于使用的存储引擎。有关此文档的参考,请参阅输出。
例如,如果您使用 WiredTiger 存储引擎在 matrices
集合上使用 storageStats: {}
选项运行 $collStats
db.matrices.aggregate( [ { $collStats: { storageStats: { } } } ] )
此查询返回的结果类似于以下
{ "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" : [ "_id_1_abc_1" ], "totalIndexSize" : 260337664, "totalSize" : 613216256, "indexSizes" : { "_id_" : 9891840, "_id_1_abc_1" : 250445824 }, "scaleFactor" : 1 } }
有关此文档的参考,请参阅输出。
注意
正在进行的索引
返回的 storageStats
包含有关正在构建的索引的信息。有关详细信息,请参阅
在视图上使用 storageStats
选项执行 $collStats
将导致错误。
count
字段
只有当您指定 count
选项时,count
字段才存在于输出中。
例如,如果您在一个 matrices
集合上使用 count: {}
选项运行 $collStats
db.matrices.aggregate( [ { $collStats: { count: { } } } ] )
查询返回的结果类似于以下内容
{ "ns" : "test.matrices", "host" : "mongo.example.net:27017", "localTime" : ISODate("2017-10-06T19:43:56.599Z"), "count" : 1103869 }
注意
计数基于集合的元数据,对于分片集群,这是一个快速但有时不准确的方法。
当指定storageStats: {}
时,集合中的文档总数也作为storageStats.count
提供。有关更多信息,请参阅storageStats
文档。
queryExecStats
文档
只有当指定queryExecStats
选项时,queryExecStats
内嵌文档才存在于输出中。
collectionScans
字段包含以下字段的内嵌文档
例如,如果你在名为matrices
的集合上运行带有queryExecStats: {}
选项的$collStats
db.matrices.aggregate( [ { $collStats: { queryExecStats: { } } } ] )
查询返回的结果类似于以下内容
{ "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
在分片集合上的输出
当在分片集合上运行时,$collStats
输出每个分片的文档。每个输出文档都包含一个shard
字段,其中包含对应文档的分片名称。
例如,如果你在带有count: {}
选项的名为matrices
的分片集合上运行$collStats
db.matrices.aggregate( [ { $collStats: { count: { } } } ] )
查询返回的结果类似于以下内容
{ "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 }