前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >MongoDB 如何查看文档的大小

MongoDB 如何查看文档的大小

作者头像
徐靖
发布于 2022-08-23 11:39:05
发布于 2022-08-23 11:39:05
3.9K00
代码可运行
举报
文章被收录于专栏:DB说DB说
运行总次数:0
代码可运行

如何查看文档的大小?常见是查看集合中平均文档大小,但很少查看单个文档或者特定范围文档的大小甚至查看文档中字段长度大小?通过查看官方文档来解答如上问题,默认返回都是字节为单位(byte),以下整理自官方文档以及jira.

1、查看集合中文档的平均大小

mongos> db.tms_province_agg_result.stats().avgObjSize;

304

2、查看集合中单个文档或者单个文档大小,只能查看单个文档

Object.bsonsize(<document>)

2.1 统计集合满足条件的单条文档的大小

--find返回cursor而不是bson文档

mongos> Object.bsonsize(db.tms_province_agg_result.find())

79372 --这个值是错误

--findOne返回文档--这个是正确用法

mongos> Object.bsonsize(db.tms_province_agg_result.findOne())

303

2.2 统计普通文档或者bson文档长度

mongos> Object.bsonsize([])

5

--统计整数长度有16,正常情况下整数长度是7,但整数在javascript里面作为double类型,所以需要额外11长度来空间

mongos> Object.bsonsize([1])

16

mongos>

--日期类型只有5

mongos> Object.bsonsize(new Date())

5

3、查看批量文档大小(mongo 4.4版本开始支持)

3.1 构造数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
db.employees.insertMany([
   {
     "_id": 1,
     "name": "Alice", "email": "alice@company.com", "position": "Software Developer",
     "current_task": {
       "project_id": 1,
       "project_name": "Aggregation Improvements",
       "project_duration": 5,
       "hours": 20
     }
   },
   {
     "_id": 2,
     "name": "Bob", "email": "bob@company.com", "position": "Sales",
     "current_task": {
       "project_id": 2,
       "project_name": "Write Blog Posts",
       "project_duration": 2,
       "hours": 10,
       "notes": "Progress is slow. Waiting for feedback."
     }
   },
   {
     "_id": 3,
     "name": "Charlie", "email": "charlie@company.com", "position": "HR (On Leave)",
     "current_task": null
   },
   {
     "_id": 4,
     "name": "Dianne", "email": "diane@company.com", "position": "Web Designer",
     "current_task": {
       "project_id": 3,
       "project_name": "Update Home Page",
       "notes": "Need to scope this project."
     }
   }
]);

3.2 查看满足条件文档的长度(byte)

$$ROOT--表示当前行

{ $bsonSize: <object> } 通过aggregate

mongos>db.employees.aggregate([

   //通过match匹配满足条件的记录

   {"$match":{"_id":{"$gt":2}}},

   //计算每一条文档的大小

   { $project: { name: "$name", object_size: { $bsonSize: "$$ROOT" } }  }

])

{ "_id" : 3, "name" :"Charlie", "object_size" : 109 }

{ "_id" : 4, "name" : "Dianne","object_size" : 204 }

4、查看批量文档(mongo 4.4版本开始支持)中嵌套文档长度(byte)

db.employees.aggregate([

   { $project: { name:"$name", task_object_size: { $bsonSize: "$current_task" }}  }

])

{ "_id" : 1, "name" : "Alice","task_object_size" : 109 }

{ "_id" : 2, "name" : "Bob","task_object_size" : 152 }

{ "_id" : 3, "name" :"Charlie", "task_object_size" : null }

{ "_id" : 4, "name" : "Dianne","task_object_size" : 99 }

5、查看文档中字符串、二进制的长度,需要通过$binarySize来实现

5.1 构造数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
db.images.insertMany([
  { _id: 1, name: "cat.jpg", binary: new BinData(0, "OEJTfmD8twzaj/LPKLIVkA==")},
  { _id: 2, name: "big_ben.jpg", binary: new BinData(0, "aGVsZmRqYWZqYmxhaGJsYXJnYWZkYXJlcTU1NDE1Z2FmZCBmZGFmZGE=")},
  { _id: 3, name: "tea_set.jpg", binary: new BinData(0, "MyIRAFVEd2aImaq7zN3u/w==")},
  { _id: 4, name: "concert.jpg", binary: new BinData(0, "TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlzIHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2YgdGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGludWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdlLCBleGNlZWRzIHRoZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4=")},
  { _id: 5, name: "empty.jpg", binary: new BinData(0, "") }
])

5.2 查询集合中所有文档binary字段的长度(byte)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
db.images.aggregate([
  {
    $project: {
      "name": "$name",
      "imageSize": { $binarySize: "$binary" }
    }
  }
])
{ "_id" : 1, "name" : "cat.jpg", "imageSize" : 16 }
{ "_id" : 2, "name" : "big_ben.jpg", "imageSize" : 41 }
{ "_id" : 3, "name" : "tea_set.jpg", "imageSize" : 16 }
{ "_id" : 4, "name" : "concert.jpg", "imageSize" : 269 }
{ "_id" : 5, "name" : "empty.jpg", "imageSize" : 0 }

5.3 通过match来过滤不需要的条件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
db.images.aggregate([
   //通过match匹配满足条件的记录
   {"$match":{"_id":{"$gt":2}}},
   //计算每一条文档中binary的大小
   { $project: { name: "$name", object_size: { $binarySize: "$binary" } }  }
])
{ "_id" : 3, "name" : "tea_set.jpg", "object_size" : 16 }
{ "_id" : 4, "name" : "concert.jpg", "object_size" : 269 }
{ "_id" : 5, "name" : "empty.jpg", "object_size" : 0 }
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-11-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DB说 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
springboot Actuator
springboot Actuator只需要加入依赖即可使用: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> application.properties 中可以加入以下配置: # false,表示不敏感,可以随意访问,否则就是做了一些保护,不能随意访问。 endpoints.mapping
yawn
2018/03/14
6960
第11章 Spring Boot应用监控第11章 Spring Boot应用监控小结
在实际的生产系统中,我们怎样知道我们的应用运行良好呢?我们往往需要对系统实际运行的情况(各种cpu,io,disk,db,业务功能等指标)进行监控运维。这需要耗费我们不少精力来搞这些工作。在SpringBoot中,我们完全不需要面对这样的难题。
一个会写诗的程序员
2018/08/20
1.4K0
springBoot系列教程01:elasticsearch的集成及使用
 1.首先安装elasticsearch 集群环境,参考 http://www.cnblogs.com/xiaochangwei/p/8033773.html
肖哥哥
2018/08/02
1.1K0
springBoot系列教程01:elasticsearch的集成及使用
Spring Boot :四大神器之Actuator
Spring Boot有四大神器,分别是auto-configuration、starters、cli、actuator,本文主要讲actuator。actuator是spring boot提供的对应用系统的自省和监控的集成功能,可以对应用系统进行配置查看、相关功能统计等。
Freedom123
2024/03/29
1750
Spring Boot :四大神器之Actuator
SOFARPC源码解析-搭建环境
简介摘要 SOFA 是蚂蚁金服自主研发的金融级分布式中间件,包含构建金融级云原生架构所需的各个组件,包括微服务研发框架,RPC 框架,服务注册中心,分布式定时任务,限流/熔断框架,动态配置推送,分布式链路追踪,Metrics监控度量,分布式高可用消息队列,分布式事务框架,分布式数据库代理层等组件,是一套分布式架构的完整的解决方案,也是在金融场景里锤炼出来的最佳实践。 SOFARPC是蚂蚁金服开源的高可扩展性、高性能、生产级的Java RPC框架。SOFARPC致力于简化应用之间的RPC调用,为应用提供方便透明、稳定高效的点对点远程服务调用方案。为了用户和开发者方便的进行功能扩展,SOFARPC提供丰富的模型抽象和可扩展接口,包括过滤器、路由、负载均衡等等。 SOFARPC功能特性:(1)透明化、高性能的远程服务调用;(2)支持多种服务路由及负载均衡策略;(3)支持多种注册中心的集成;(4)支持多种协议;(5)支持同步、单向、回调、泛化等多种调用方式;(6)支持集群容错、服务预热、自动故障隔离;(7)强大的扩展功能,可以按需扩展各个功能组件。 SOFARPC Github:https://github.com/alipay/sofa-rpc 架构设计 SOFARPC从下到上分为两层:核心层:包含RPC 的核心组件(例如我们的各种接口、API、公共包)以及一些通用的实现(例如随机等负载均衡算法)。功能实现层:所有的功能实现层的用户都是平等的,都是基于扩展机制实现的。
爱撸猫的杰
2019/03/28
1.3K0
SOFARPC源码解析-搭建环境
Spring Boot的应用启动与关闭
Spring Boot应用可以打成jar包,其中内嵌tomcat,因此可以直接启动使用。但是在Spring Boot应用启动之前,首先需要进行打包,本文讲述的是Maven工程的打包,打包需要的前提条件(pom.xml文件中的内容)是:
Tyan
2019/05/25
1.7K0
Spring Boot Admin 2 值得了解的新变化
6.19号,spring团队发布了期待已久的 Spring Cloud Finchley.RELEASE 版本。 期间Spring Boot Admin 也发布了 2.0.1 兼容它,我在升级pig 到Finchley.RELEASE的同时 发现很多有意思的变化整理发出来
冷冷
2018/06/28
1.2K0
01-如何在 Spring Boot 应用程序中使用 Actuator 监控和管理端点,提高应用程序的生产力?
健康信息可以检查应用的运行状态,它经常被监控软件用来提醒人们生产环境是否存在问题。health端点暴露的默认信息取决于端点是如何被访问的。
JavaEdge
2023/05/24
9890
01-如何在 Spring Boot 应用程序中使用 Actuator 监控和管理端点,提高应用程序的生产力?
SpringBoot入门建站全系列(二十九)Actuator服务监控及SpringBootMonitor单机监控页面
Actuaotr是spring boot项目中非常强大的一个功能,有助于对应用程序进行监控和管理,通过restful api请求来监管、审计、收集应用的运行情况,针对微服务而言它是必不可少的一个环节。
品茗IT
2020/05/28
2.4K0
《Kotin 极简教程》第11章 使用Kotlin 集成 SpringBoot开发Web服务端第11章 使用Kotlin集成SpringBoot开发Web服务端《Kotlin极简教程》正式上架:
我们在前面第2章 “ 2.3 Web RESTFul HelloWorld ” 一节中,已经介绍了使用 Kotlin 结合 SpringBoot 开发一个RESTFul版本的 Hello World。当然,Kotlin与Spring家族的关系不止如此。在 Spring 5.0 M4 中引入了一个专门针对Kotlin的支持。
一个会写诗的程序员
2018/08/17
3.2K0
《Kotin 极简教程》第11章 使用Kotlin 集成 SpringBoot开发Web服务端第11章 使用Kotlin集成SpringBoot开发Web服务端《Kotlin极简教程》正式上架:
SpringBoot监控工具之《Actuator》
有句话怎么说呢?学的越多,不知道的就越多,现在感觉学的越来越废了,不学又不行,最近一直在钻研 SpringBoot相关的内容,准备先写一些基础的案例代码,后续研究的更加透彻,写一些有内涵的刨析文章发表出来,下面开始吧!
框架师
2021/11/22
1.7K0
SpringBoot监控工具之《Actuator》
Spring Boot Actuator监控使用详解
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
程序新视界
2019/11/20
1.9K0
SpringBoot2.0 基础案例(16):配置Actuator组件,实现系统监控
在生产环境中,需要实时或定期监控服务的可用性。Spring Boot的actuator(健康监控)功能提供了很多监控所需的接口,可以对应用系统进行配置查看、相关功能统计等。
知了一笑
2019/07/19
5350
SpringCloud 2.x学习笔记:22、使用Sentinel实现接口限流
https://github.com/alibaba/Sentinel/releases
程裕强
2019/07/11
1.8K0
SpringCloud 2.x学习笔记:22、使用Sentinel实现接口限流
原 荐 SpringBoot 2.0 系列0
SpringBoot 2.0 系列004 --启动实战之配置文件 配置文件 配置文件加载流程 很多文档包括官方文档说SB的默认配置文件是application开头的文件,那么是为什么呢? 我们先
石奈子
2018/06/13
8900
Spring Boot 2.0 新特性(二):新增事件ApplicationStartedEvent
今天继续来聊Spring Boot 2.0的新特性。本文将具体说说2.0版本中的事件模型,尤其是新增的事件: ApplicationStartedEvent。 原文首发:http://blog.didispace.com/Spring-Boot-2-0-feature-2-ApplicationStartedEvent/ 在Spring Boot 2.0中对事件模型做了一些增强,主要就是增加了 ApplicationStartedEvent事件,所以在2.0版本中所有的事件按执行的先后顺序如下: Appli
程序猿DD
2018/03/21
2K0
聊聊springcloud的serviceRegistryEndpoint
本文主要研究一下springcloud的serviceRegistryEndpoint
code4it
2018/09/17
1.4K0
第一节,创建第一个springboot项目
版权声明:本文为博主原创文章,未经博主允许不得转载。 本系列使用工具 IDEA 1.创建项目 2.新创建完项目目录 3.开启项目 有键打开 执行 如下图,就代表启动成功了 . __
DencyCheng
2018/11/05
7650
Spring Boot Actuator详解与深入应用(二):Actuator 2.x
本文系《Spring Boot Actuator详解与深入应用》中的第二篇。在上一篇文章:Spring Boot Actuator详解与深入应用(一):Actuator 1.x主要讲了Spring Boot Actuator 1.x的应用与定制端点。Spring Boot2.0的正式版已经发布有一段时间了,目前已经到了2.1.0.RELEASE。关于Spring Boot2.x的特性,在此不详细叙述了,但是其流行的趋势是显而易见的。
aoho求索
2018/12/17
2.5K0
微服务架构之Spring Boot(七十三)
端点上的操作通过其参数接收输入。通过Web公开时,这些参数的值取自URL的查询参数和JSON请求体。通过JMX公开时,参数将映射到
用户1289394
2022/05/23
2.3K0
推荐阅读
相关推荐
springboot Actuator
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档