MongoDB(6)- BSON 数据类型

本文涉及的产品
云数据库 MongoDB,通用型 2核4GB
简介: MongoDB(6)- BSON 数据类型

BSON


  • BSON是一种二进制序列化格式,用于在 MongoDB 中存储文档和进行远程过程调用
  • 跟 JSON 的数据结构很像,但是支持更丰富的数据类型

 

数据类型


数据类型 序号 别名 备注
Double 1 double  
String 2 string  
Object 3 object  
Array 4 array  
Binary data 5 binData  
Undefined 6 undefined 弃用
ObjectId 7 objectId  
Boolean 8 bool  
Date 9 date  
Null 10 null  
Regular Expression 11 regex  
DBPointer 12 dbPointer 弃用
JavaScript 13 javascript  
Symbol 14 symbol 弃用
JavaScript code with scope 15 javascriptWithScope 4.4 弃用
32-bit integer 16 int  
Timestamp 17 timestamp  
64-bit integer 18 long  
Decimal128 19 decimal  
Min key -1 minKey  
Max key 127 maxKey    

 

序号有什么用?

到时候想通过 $type 来指定某个数据类型的时候可以用序号,而不用敲完整的字符串

image.png


可以看到,通过 $type 来指定数据类型的时候,可以用别名,也可以用序号

 

ObjectId

ObjectId 很小,可能是唯一的,生成速度快,并且有序,ObjectId 值的长度为 12 个字节,包括

  • 一个 4 字节的时间戳值,代表 ObjectId 的创建,以 Unix 纪元以来的秒数为单位
  • 一个 5 字节的随机值
  • 一个 3 字节递增计数器,初始化为随机值

 

给 _id 添加一个 ObjectId 的好处

  • 对存储 ObjectId 值的 _id 字段进行排序大致相当于按创建时间排序
  • 在 mongo shell 中,可以使用 ObjectId.getTimestamp() 方法访问 ObjectId 的创建时间

ObjectId("60b441609c297cd9d2ecf60f").getTimestamp()

ISODate("2021-05-31T01:52:32Z")

 

String

  • BSON 字符串是UTF-8
  • 在序列化和反序列化 BSON 时,每种编程语言的驱动程序都会从该语言的字符串格式转换为 UTF-8
  • 这使得在 BSON 字符串可以轻松存储大多数国际字
  • 此外,MongoDB $regex 查询在 regex 字符串中支持 UTF-8

 

Timestamps

  • BSON 有一个特殊的时间戳类型供内部 MongoDB 使用,并且与常规 Date 类型无关
  • 此内部时间戳类型是一个 64 位值
  • 前 32 位是 time_t 值(至 1970 年依赖的秒数),后 32 位是给定秒内操作的递增序数
  • 在单个 mongod 实例中,时间戳值始终是唯一的

 

new Timestamp()

在插入包含具有空时间戳值的顶级字段的文档时,MongoDB将用当前时间戳值替换空时间戳值

db.myNewCollection1.insert({test:new timestamp()})


db.myNewCollection1.find()

{ "_id" : ObjectId("542c2b97bac0595474108b48"), "ts" : Timestamp(1412180887, 1) }

 

Date


BSON Date 是一个 64 位整数,表示自 Unix 纪元(1970 年 1 月 1 日)以来的毫秒数

 

在 shell 构造一个 date

var mydate1 = new Date()

 

在 mongo shell 中使用 ISODate() 构造函数构造一个 Date

var mydate2 = ISODate()

image.png

两种函数构造的 Date,值是同个类型的

 

以字符串形式返回日期值

mydate1.toString()

image.png

返回日期值的月份部分

月是零索引,因此一月是月0

mydate1.getMonth()

image.png


不同 BSON 数据类型的比较顺序

  1. MinKey (internal type)
  2. Null
  3. Numbers (ints, longs, doubles, decimals)
  4. Symbol, String
  5. Object
  6. Array
  7. BinData
  8. ObjectId
  9. Boolean
  10. Date
  11. Timestamp
  12. Regular Expression
  13. MaxKey (internal type)

后续再展开讲


相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
存储 JSON NoSQL
『MongoDB』MongoDB的数据存储格式Bson比Json有哪些优势?
📣读完这篇文章里你能收获到 - MongoDB存储数据格式BSON介绍 - 使用Bson格式的三大优势
633 1
『MongoDB』MongoDB的数据存储格式Bson比Json有哪些优势?
|
2天前
|
存储 JSON NoSQL
MongoDB的文档存储格式BSON和JSON的区别
MongoDB的文档存储格式BSON和JSON的区别
|
6月前
|
存储 JSON NoSQL
MongoDB中常用的几种数据类型
MongoDB中常用的几种数据类型
|
6月前
|
存储 NoSQL Unix
05 MongoDB - 数据类型
05 MongoDB - 数据类型
22 0
|
NoSQL Go MongoDB
go mongodb 忽略字段,go bson 忽略字段
go mongodb 忽略字段,go bson 忽略字段
1040 0
|
存储 JSON NoSQL
MongoDB :第三章:MongoDB的数据类型与创建MongoDB数据库
MongoDB :第三章:MongoDB的数据类型与创建MongoDB数据库
792 0
MongoDB :第三章:MongoDB的数据类型与创建MongoDB数据库
|
存储 SQL NoSQL
MongoDB简介、数据类型及帮助命令
MongoDB 是一个可扩展、高性能的 NoSQL 数据库,由 C++ 语言编写,旨在为 web 应用提供高性能可扩展的数据存储解决方案。 它的特点是高性能、易部署、易使用,存储数据非常方便,主要特性有:
|
存储 JSON JavaScript
MongoDB的数据格式及数据类型
原文链接:https://www.cnblogs.com/Khadron/p/MongoDB_Note_1.html JSON     JSON是一种简单的数据表示方式,它易于理解、易于解析、易于记忆。
2094 0
|
JSON 分布式计算 DataWorks