$collStats (aggregation)

在本页面

Definition

返回有关集合或视图的统计信息。

$collStats阶段具有以下原型形式:

{
  $collStats:
    {
      latencyStats: { histograms: <boolean> },
      storageStats: {},
      count: {}
    }
}

$collStats阶段接受带有以下* optional *字段的自变量文档:

Field Name Description
latencyStats latency statistics添加到返回文档中。
latencyStats.histograms 如果true,则将延迟直方图信息添加到latencyStats中的嵌入文档中。
storageStats storage statistics添加到返回文档中。
count 将集合中的文档总数添加到返回文档中。


3.6 版中的新功能。

对于副本集中的集合或群集中的non-sharded collection$collStats输出单个文档。对于sharded collection$collStats每个分片输出一个文档。输出文档包括以下字段:

Field Name Description
ns 所请求的集合或视图的namespace
shard 输出文档对应的分片名称。


仅当$collStats在分片群集上运行时才存在。 分片和非分片集合都将产生此字段。
3.6 版中的新功能。
| host |生成输出文档的 mongod 进程的主机名和端口。
3.6 版中的新功能。
| localTime | MongoDB 服务器上的当前时间,表示自Unix epoch以来的 UTC 毫秒。
| latencyStats |与集合或view的请求 await 时间有关的统计信息集合。有关此文档的详细信息,请参见latencyStats Document
仅在指定latencyStats: {}选项时存在。
| storageStats |与集合的存储引擎有关的统计信息集合。有关此文档的详细信息,请参见storageStats Document
仅在指定storageStats: {}选项时存在。如果应用于view,则返回错误。
| count |集合中的文档总数。此数据也可以在storageStats.count中获得。
仅在指定count: {}选项时存在。如果应用于view,则返回错误。

Behavior

$collStats必须是聚合管道中的第一阶段,否则管道将返回错误。

latencyStats Document

如果您指定latencyStats选项,则latencyStats嵌入式文档仅存在于输出中。

Field Name Description
reads 读取请求的延迟统计信息。
writes 写入请求的延迟统计信息。
commands 数据库命令的延迟统计信息。

每个字段都包含一个嵌入的文档,其中包含以下字段:

Field Name Description
latency long给出总的组合延迟(以微秒为单位)。
ops long给出自启动以来对集合执行的操作总数。
histogram 一组嵌入式文档,每个文档代表一个 await 时间范围。每个文档覆盖先前文档范围的两倍。对于 2048 微秒到大约 1 秒之间的较高值,直方图包括半步。

仅提供latencyStats: { histograms: true }选项后,此字段才存在。输出中省略带有零count的空范围。
每个文档都包含以下字段:
栏位名称 描述
micros long给出了当前 await 时间范围的上限时间(以微秒为单位)。
该文档的范围介于上一个文档的micros值(不包括此值)和该文档的micros值(包括一个值)之间。

count long给出了延迟时间小于或等于micros的操作数。
例如,如果collStats返回以下直方图:
histogram: [
{ micros: NumberLong(1), 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) }

br]
这表明有:
10 操作耗时不超过 1 微秒,
1 操作的范围为(1、2]微秒,
1 操作范围为(3072,4096]微秒,
1000 范围(12288,16384)的操作,以及
100 个操作在(32768,49152]范围内。

例如,如果您在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" : [ ],
          "latency" : NumberLong(0),
          "ops" : NumberLong(0) }
    }
}

storageStats Document

如果您指定storageStats选项,则storageStats嵌入式文档仅存在于输出中。

本文档的内容取决于使用的存储引擎。有关此文档的参考,请参见Output

例如,如果您使用WiredTiger 存储引擎matrices集合上使用storageStats: {}选项运行$collStats

db.matrices.aggregate( [ { $collStats: { storageStats: { } } } ] )

该查询返回的结果类似于以下内容:

{
  "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" : 1,
    "indexDetails" : {
      ...
    },
    "totalIndexSize" : 9891840,
    "indexSizes" : {
      "_id_" : 9891840
    }
  }
}

view使用storageStats选项执行$collStats会导致错误。

count Field

3.6 版的新功能。

如果您指定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 Document

$ colled 在分片集合上的状态

sharded collections上运行时,$collStats每个分片输出一个文档。每个输出文档都包含一个shard字段,其中包含该文档所对应的分片的名称。

例如,如果您对分片集合运行$collStats,而对名为matrices的集合使用count: {}选项:

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
}
首页