文档菜单
文档首页
/
MongoDB 手册
/ / /

$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

将集合中的文档总数添加到返回的文档中。

计数基于集合的元数据,对于分片集群,这是一个快速但有时不准确的方法。

请参阅 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 必须是聚合管道的第一个阶段,否则管道将返回错误。

使用 mongodWired Tiger 存储引擎进行不干净的关闭后,大小和计数$collStats 报告的统计信息可能不准确。

漂移量取决于从上次 检查点 到不干净关闭之间执行的插入、更新或删除操作的数量。检查点通常每60秒发生一次。但是,使用非默认 --syncdelay 设置运行的 mongod 实例可能有更频繁或更不频繁的检查点。

mongod 上的每个集合上运行 validate 以在不干净的关闭后恢复统计信息。

在不干净的关闭后

当使用 可查询加密 时,$collStats 输出会删除加密集合的某些信息

  • 输出省略了 "queryExecStats"

  • 输出省略了 "latencyStats"

  • 如果存在,输出将删除 "WiredTiger",只包括 url 字段。

$collStats交易 中不允许使用。

只有在指定了 latencyStats 选项的情况下,latencyStats 嵌入文档才会存在于输出中。

字段名称
描述
读取
读取请求的延迟统计信息。
写入
写入请求的延迟统计信息。
命令
数据库命令的延迟统计信息。
交易
数据库交易的延迟统计信息。

这些字段中的每个都包含一个嵌入文档,该文档包含以下字段

字段名称
描述
延迟
一个64位整数,表示总的组合延迟(微秒)。
操作
一个64位整数,表示自启动以来在集合上执行的总操作数。
直方图

嵌入文档的数组,每个文档表示一个延迟范围。每个文档覆盖上一个文档范围的两倍。对于介于2048微秒和大约1秒之间的较低值,直方图包括半步长。

只有当指定了 latencyStats: { histograms: true } 选项时,此字段才存在。具有零 count 的空范围被省略在输出中。

每个文档都包含以下字段

字段名称
描述
微秒

一个64位整数,表示当前延迟范围的包含下限(微秒)。

该文档的范围介于上一个文档的 micros 值(排除)和该文档的 micros 值(包含)之间。

count
一个64位整数,表示小于或等于 micros 的操作数。

例如,如果 collStats 返回以下直方图

histogram: [
{ micros: NumberLong(0), count: NumberLong(10) },
{ micros: NumberLong(2), count: NumberLong(1) },
{ micros: NumberLong(4096), count: NumberLong(1) },
{ micros: NumberLong(16384), count: NumberLong(1000) },
{ micros: NumberLong(49152), count: NumberLong(100) }
]

这表示有 [1]

  • 10 个操作耗时2微秒或更少

  • 1 个操作在 [2, 4) 微秒范围内

  • 1 次操作在范围 [4096, 6144) 微秒内

  • 1000 次操作在范围 [16384, 24576) 微秒内

  • 100 次操作在范围 [49152, 65536) 微秒内

[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 嵌入式文档才存在于输出中。

此文档的内容取决于使用的存储引擎。有关此文档的参考,请参阅输出

例如,如果您使用 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 字段才存在于输出中。

例如,如果您在一个 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内嵌文档才存在于输出中。

collectionScans字段包含以下字段的内嵌文档

字段名称
描述
total
一个64位整数,表示执行集合扫描的查询总数。总数包括使用和不使用可尾部游标的查询。
nonTailable
一个64位整数,表示执行集合扫描但没有使用可尾部游标的查询数量。

例如,如果你在名为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输出每个分片的文档。每个输出文档都包含一个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
}

提示

另请参阅

返回

$changeStreamSplitLargeEvent

本页内容