MongoDB聚合:$collStats

$collStats是MongoDB中用于获取集合或视图统计信息的聚合阶段,提供了关于延迟、存储、文档计数和查询执行的详细数据,适用于分片和非分片集群。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

聚合阶段$collStates用于返回集合或视图统计信息。

语法

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

参数说明

$collStats接收一个文档参数,可选的字段如下:

latencyStats 延迟统计信息

向返回结果添加延迟统计信息,包括读、写、命令、事务的时间。

latencyStats.histograms 延迟统计柱状图数据

当值为true时,向latencyStats内嵌文档中添加时延柱状图数据序列,根据这个序列可以生成柱状图。

storageStats 存储相关信息

向返回结果文档添加存储相关的统计信息:

  • 指定一个空的文档(如:storageStats: {}),表示数据大小的缺省比例因子为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:{}选项时才有。
storageStats 与数据集存储引擎相关的统计信息。各种大小数据按指定系数比例(在字段名中指定测量单位的大小除外)。只有指定 storageStats 选项时才会出现。如果应用于视图,则返回错误信息。
count 集合中的文档总数。存储统计计数(storageStats.count)中也有该数据。仅在指定 count:{} 选项时才会出现。如果应用于视图,则返回错误信息。
queryExecStats 与执行集合查询相关的统计信息。仅在指定queryExecStats:{}选项时才会出现。如果应用于视图,则返回错误信息。

使用

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

使用可查询加密时,$collStats 输出会对加密集合的某些信息进行编辑:

  • 输出会省略 "queryExecStats"
  • 输出省略 "latencyStats"
  • 输出中删除了 "WiredTiger"(如果存在),只包含 url 字段。

**注意:**事务中不能使用$collStats

latencyStats 文档

只有指定了latencyStats选项,输出中才会嵌入latencyStats文档。

字段名 描述
reads 读取请求的延迟统计数据。
writes 写入请求的延迟统计数据。
commands 数据库命令的延迟统计。
transactions 数据库事务的延迟统计。

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

  • latency,一个 64 位整数,表示以微秒为单位的总延迟时间。

  • ops,一个 64 位整数,表示自启动以来对数据集执行的操作总数。

  • histogram,嵌入式文档数组,每个文档代表一个延迟范围。每个文档的范围是前一个文档范围的两倍。对于介于 2048 微秒和大约 1 秒之间的上限值,直方图包含半步。只有在使用 latencyStats:{ histograms: true } 选项,输出中将省略计数为零的空范围。每份文档都有以下字段:

    字段 描述
    micros 一个 64 位整数,以微秒为单位表示当前延迟范围的时间上限。文档的范围介于上一个文档的微妙值(不包括)和本文档的微秒值(包括)之间。
    count 一个 64 位整数,表示延迟小于或等于微秒的操作次数。
    例如,如果collStats会返回如下直方图数据:
    histogram: [
    {
         
          micros: NumberLong(1), count: NumberLong(10) },
    {
         
          micros: NumberLong(2), count: NumberLong(1) },
    {
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

原子星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值