$collStats(聚合)

在本页面

定义

  • $collStats

    • version 3.4 中的新内容。

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

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

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

$collStats阶段接受带有以下可选字段的参数文档:

字段 Name描述
latencyStats延迟统计添加到 return 文档。
latencyStats.histograms如果true,将延迟直方图信息添加到latencyStats中的嵌入文档中。
storageStats存储统计添加到 return 文档。
count将集合中的文档总数添加到 return 文档中。
version 3.6 中的新内容。

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

字段 Name描述
ns请求的集合或视图的命名空间
shard输出文档对应的分片的 name。
仅在$collStats在分片 cluster 上运行时出现。 分片和 non-sharded 集合都会产生这个字段。
version 3.6 中的新内容。
host生成输出文档的 mongod process 的主机名和 port。
version 3.6 中的新内容。
localTimeMongoDB 服务器上的当前 time,表示为自Unix 时代以来的 UTC 毫秒数。
latencyStats与集合的请求延迟或视图相关的统计信息的集合。有关本文档的详细信息,请参阅latencyStats 文档
仅在指定latencyStats: {}选项时出现。
storageStats与集合的存储引擎相关的统计信息集合。有关本文档的详细信息,请参阅storageStats 文档
仅在指定storageStats: {}选项时出现。如果应用于视图,则返回错误。
count集合中的文档总数。此数据也可在storageStats.count中获得。
仅在指定count: {}选项时出现。如果应用于视图,则返回错误。

行为

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

latencyStats 文档

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

字段 Name描述
reads读取请求的延迟统计信息。
writes写请求的延迟统计信息。
commands数据库命令的延迟统计信息。

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

字段 Name描述
latencyA 给出总的组合延迟,以微秒为单位。
opsA 给出自启动以来对集合执行的操作总数。
histogram嵌入式文档的 array,每个都代表一个延迟范围。每个文档涵盖以前文档范围的两倍。对于介于 2048 微秒和大约 1 秒之间的上限值,直方图包括 half-steps。
此字段仅在latencyStats: { histograms: true }选项的情况下存在。输出中省略了具有零count的空范围。
每个文档都包含以下字段:
字段 Name 描述
micros A 给出当前延迟范围的包含上限 time 限制,以微秒为单位。
文档的范围 spans 在前一个文档的micros value,exclusive 和本文档的micros value 之间。
count A 给出延迟小于或等于micros的操作数。
例如,如果collStats返回以下直方图:
histogram:[104]
这表示:
10 次操作占用 1 微秒或更少,
1 操作范围(1,2)微秒,
1 操作范围内的范围(3072,4096)微秒,
1000 次操作(12288,16384)和范围内的
100 次操作(32768,49152)。

例如,如果您在matrices集合上使用latencyStats: {}选项 run $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 文档

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

本文档的内容取决于所使用的存储引擎。有关此文档的 reference,请参阅产量

例如,如果使用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
    }
  }
}

视图上使用storageStats选项执行$collStats会导致错误。

算领域

version 3.6 中的新内容。

如果指定count选项,则count字段仅存在于输出中。

例如,如果您在matrices集合上使用count: {}选项 run $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 文档

$collStats 关于 Sharded Collections

分片集合上 run 时,每个分片输出一个文档。每个输出文档都包含一个shard字段,其中包含文档对应的分片的 name。

例如,如果您在名为matrices的集合上使用count: {}选项在分片集合上运行$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
}

也可以看看 collStatsdb.collection.stats()