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 来指定某个数据类型的时候可以用序号,而不用敲完整的字符串

可以看到,通过 $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()

两种函数构造的 Date,值是同个类型的
以字符串形式返回日期值
mydate1.toString()

返回日期值的月份部分
月是零索引,因此一月是月0
mydate1.getMonth()

不同 BSON 数据类型的比较顺序
- MinKey (internal type)
- Null
- Numbers (ints, longs, doubles, decimals)
- Symbol, String
- Object
- Array
- BinData
- ObjectId
- Boolean
- Date
- Timestamp
- Regular Expression
- MaxKey (internal type)
后续再展开讲
MongoDB(6)- BSON 数据类型的更多相关文章
- MongoDB之bson的介绍
MongoDB之bson的介绍 1. 什么是bson BSON是一种类json的一种二进制形式的存储格式,简称Binary JSON,它和JSON一样,支持内嵌的文档对象和数组对象,但是BSON有JS ...
- MongoDB数据库的数据类型和$type操作符
前面的话 本文将详细介绍MongoDB数据库的数据类型和$type操作符 数据类型 MongoDB支持以下数据类型 类型 数字 备注 Double 1 双精度浮点数 - 此类型用于存储浮点值 Stri ...
- MongoDB(四):数据类型、插入文档、查询文档
1. 数据类型 MongoDB支持许多数据类型. 字符串 - 这是用于存储数据的最常用的数据类型.MongoDB中的字符串必须为UTF-8. 整型 - 此类型用于存储数值. 整数可以是32位或64位, ...
- 处理范例代码Webapi中的Mongodb的Bson中ObjectId反序列化异常
微软代码范例中的一个Bug 处理Mongodb的Bson中ObjectId反序列化异常 https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/f ...
- Java 构造 BSON 数据类型
Java 构造 BSON 数据类型 整数/符浮点数 Java BSON 构造整数/符浮点数类型 // {a:123, b:3.14} BSONObject obj = new BasicBSONObj ...
- MongoDB导入bson文件(元数据),mongorestore命令行方式导入
MongoDB导入bson文件(元数据),mongorestore命令行方式导入 不推荐使用MongoDB Compass等图形化数据库管理软件,例如MongoDB Compass只能导入json和c ...
- MongoDB中的数据类型
mongoDB中存储的数据单元被称作文档.文档的格式与JSON很类似,只不过由于JSON表达的数据类型范围太小(null,boolean,numeric,string和object),mongoDB对 ...
- mongoDB支持的数据类型
下表为MongoDB中常用的几种数据类型. 数据类型 描述 String 字符串.存储数据常用的数据类型.在 MongoDB 中,UTF-8 编码的字符串才是合法的. Integer 整型数值.用于存 ...
- MongoDB学习【二】—MongoDB基础和数据类型
一.MongoDB基础知识 在MongoDB中相关术语的解释和sql术语对应关系 SQL术语/概念 MongoDB术语/概念 解释/说明 database database 数据库 table col ...
随机推荐
- 大数据学习(08)—— Hive简介
前面的Hadoop学习是非常体系化的,有主线有细节.到了Hive这里,知识点非常零散,感觉没有什么主线能把它串起来.从官方网站上就能看出这点差异. 什么是Hive Hive是一个基于Hadoop的企业 ...
- vue 子目录配置,负载均衡 nginx
1. 我使用的是,腾讯云做负载均衡. 负载均衡配置: https://www.xxxx.com/vue 域名指向的服务器地址:10.10.10.10:80/vue 2. nginx 配置: ser ...
- vue菜单切换
HTML: <div id="box"> <ul> <li v-for= "(item,index) in arry"> & ...
- .net 知新:【4】NuGet简介和使用
在包管理以前我们在项目中引用第三方包通常是去下载dll放到项目中再引用,后来逐渐发展成各种包管理工具,nuget就是一种工具,适用于任何现代开发平台的基本工具可充当一种机制,通过这种机制,开发人员可以 ...
- vue的项目初始化
1.创建文件 blog 2.下载安装node mongoose 3.(1)vue创建后端项目文件 vue create admin (2)vue创建前端项目文件 vue create web (3)新 ...
- Greenplum 6安装指南(CentOS 7.X)
一.基本概念 Greenplum是一个面向数据仓库应用的关系型数据库,因为有良好的体系结构,所以 在数据存储.高并发.高可用.线性扩展.反应速度.易用性和性价比等方面有非常 明显的优势.Greenpl ...
- PTA数据结构习题集
https://blog.csdn.net/qq_43733499/category_8956159.html https://www.cnblogs.com/nonlinearthink/tag/% ...
- 寻找写代码感觉(二)之 Spring Boot 项目属性配置
一.前言 写代码就和恋爱一样,有反馈就要趁热打铁,搞完了项目搭建,接下来就来搞搞项目配置. 二.IDEA设置 1.编码配置 这里所说的就是代码的编码格式,你可以不设置,但是可能要面临的是,很多未知的麻 ...
- 区块链-NFT 的实现原理
作者:林冠宏 / 指尖下的幽灵.转载者,请: 务必标明出处. 博客:http://www.cnblogs.com/linguanh/ 掘金:https://juejin.im/user/1785262 ...
- 【现学现卖】python小爬虫
1.给小表弟汇总一个院校列表,想来想去可以写一个小爬虫爬下来方便些,所以就看了看怎么用python写,到了基本能用的程度,没有什么特别的技巧,大多都是百度搜的,遇事不决问百度啦 2.基本流程就是: 用 ...