MongoDB聚合:$collStats

这篇具有很好参考价值的文章主要介绍了MongoDB聚合:$collStats。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

聚合阶段$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) },
    { micros: NumberLong(4096), count: NumberLong(1) },
    { micros: NumberLong(16384), count: NumberLong(1000) },
    { micros: NumberLong(49152), count: NumberLong(100) }]
    

    这表明:

    • 10次操作耗时1微秒或更短
    • (1, 2]微秒范围内进行1次操作
    • (3072, 4096]微秒范围内进行1次操作
    • (12288, 16384]微秒范围内进行1000次操作
    • (32768, 49152]微秒范围内进行100次操作

例如,如果使用 latencyStats:{} 选项在matrices集合上运行:

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,  // Starting in MongoDB 4.4
    "capped" : false,
    "wiredTiger" : {
      ...
    },
    "nindexes" : 2,
    "indexDetails" : {
      ...
    },
    "indexBuilds" : [
       "_id_1_abc_1"
    ],
    "totalIndexSize" : 260337664,
    "totalSize" : 613216256,    // Starting in MongoDB 4.4
    "indexSizes" : {
      "_id_" : 9891840,
      "_id_1_abc_1" : 250445824
    },
    "scaleFactor" : 1
  }
}

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

count字段

只有指定了count选项,输出中才会出现计数字段。

例如,在matrices集合上使用count:{}选项运行$collStats

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

查询返回的结果如下:文章来源地址https://www.toymoban.com/news/detail-804816.html

{
  "ns" : "test.matrices",
  "host" : mongo.example.net:27017",
  "localTime" : ISODate("2017-10-06T19:43:56.599Z"),
  "count" : 1103869
}

当指定storageStats: {}时,storageStats.count会返回集合中的文档总数。

queryExecStats文档

只有指定了queryExecStats选项,输出中才会出现queryExecStats嵌入文档。collectionScans字段包含一个嵌入文档,其中包含以下字段:

字段名 描述
total 一个 64 位整数,表示执行集合扫描的查询总数。总数包括使用和未使用可跟踪游标的查询。
nonTailable 一个 64 位整数,表示执行未使用可跟踪游标的集合扫描的查询次数。

例如,在matrices集合上使用queryExecStats:{}选项运行:

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会为每个分片输出一份文档。每个输出文档都包含一个分区字段,该字段包含文档对应的分区名称。

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

到了这里,关于MongoDB聚合:$collStats的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【MongoDB】--MongoDB聚合Aggregation

    聚合操作组值来自多个文档,可以对分组数据执行各种操作以返回单个结果。聚合操作包含三类: 单一作用聚合、聚合管道、MapReduce 。 单一作用聚合 :提供对常见聚合过程的简单访问,操作都从单个集合聚合文档 聚合管道操作 :将文档在一个管道处理完毕后,把处理的结

    2024年02月14日
    浏览(40)
  • MongoDB——MongoDB删除系统自带的local数据库

    1.1、linux环境进入mongo客户端 输入 mongo 命令,进入命令行客户端 进入admin库,并登录,查看所有数据库 提升用户权限,然后进入local库并删除local库 然后重新进入admin库,把提升的用户权限降回,再次查看所有数据库 由上图可知,local库已被删除。

    2024年02月06日
    浏览(54)
  • [虚幻引擎 MongoDB Client 插件说明] DTMongoDB MongoDB数据库连接插件,UE蓝图可以操作MongoDB数据库增删改查。

    本插件可以在UE里面使用蓝图操作MongoDB数据库, 对数据库进行查询,删除,插入,替换,更新操作。 插件下载地址在文章最后。 Create MongoDB Client - 创建客户端对象 创建一个 MongoDB 客户端对象。 Connect By Url - 连接到数据库 Url :MongoDB的连接地址。 如 mongoDB://account:password@ip:

    2024年02月14日
    浏览(91)
  • MongoDB数据库从入门到精通系列文章之:MongoDB数据库百篇技术文章汇总

    MongoDB数据库系列文章持续更新中: 更多数据库内容请阅读博主数据库专栏,数据库专栏涵盖了Mysql、SQLServer、PostgreSQL、MongoDB、Oracle、Cassandra等数据库 数据库专栏 文章名称 文章链接 数据库安装部署系列之:部署Mongodb5.0.6高可用集群详细步骤 数据库安装部署系列之:部署M

    2024年02月11日
    浏览(53)
  • Mongodb连接数据库

    npm init   npm i mongoose  const mongoose=require(\\\"mongoose\\\") mongoose.connect(\\\"mongodb://127.0.0.1:27017/user\\\") 说明:mongodb是协议,user是数据库,如果没有会自动创建user数据库 。 node 文件名     mongoose.disconnect()

    2024年02月15日
    浏览(59)
  • mongodb数据库操作

    1、启动mongodb 在mongodb启动命令中 --dbpath 指定mongodb的数据存储路径 --logpath 指定mongodb的日志存储路径 2、停止mongodb 第一步先进入mongo命令行模式 第二步,使用use admin 命令进入admin数据库 第三步,执行 db.shutdownServer()命令 停止服务。代码及显示如下:  2 、导出Mongodb数据 mon

    2024年02月09日
    浏览(50)
  • MongoDb数据库

    1.显示所有数据库: show dbs 2.切换到指定数据库,如果没有则自动创建数据库 use databaseName 3.显示当前所在数据库 db 4.删除当前数据库 use 库名 db.dropDatabase() 1.创建集合 db.createCollection(\\\'集合名称\\\') 2.显示当前数据库中所有集合 show colletions  3.删除某个集合 db.xxx.drop(); 4.重命名集

    2024年02月04日
    浏览(54)
  • MongoDB数据库安装

    MongoDB数据的特点: 面相文档存储的分布式数据库 具有很强的扩展性 支持丰富的查询表达式,很接近于关系性数据库 使用类似于json的结构保存数据,可以轻易的查询到文档中内嵌的对象及数组 首先去官网下载安装包 Download MongoDB Community Server | MongoDB 启动MongoDB数据的服务 可

    2024年02月11日
    浏览(57)
  • MongoDB 数据库详细介绍

    MongoDB(来自“Humongous”,意为巨大的)是一个开源、高性能、无模式(NoSQL)、文档导向的分布式数据库。它以其灵活性、可扩展性和强大的查询功能而闻名于世。MongoDB 使用 JSON 格式的文档来存储数据,适用于多种应用场景,包括 Web 应用、移动应用、日志存储、大数据等。

    2024年02月12日
    浏览(65)
  • MongoDB:数据库初步应用

    1.MongoDBCompass连接数据库 连接路径:mongodb://用户名:密码@localhost:27017/ 2.创建数据库(集合) MongoDB中数据库被称为集合.  MongoDBCompass连接后,点击红色框加号创建集合,点击蓝色框加号创建文档(数据表) 文档中的数据结构(相当于表中的列)设计不用管,添加数据的时候,自动创建列和数

    2024年02月12日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包