MongoDB数据类型汇总

 
下表中列举了 MongoDB 中常用的几种数据类型:

数据类型 描述
String 字符串类型,是最常用的数据类型,不过在 MongoDB 中,只有 UTF-8 编码的字符串才是合法的
Integer 整型,用于存储数值。根据您使用服务器的不同,整型可以分为 32 位或 64 位两种
Boolean 布尔型,用于存储布尔类型的值(true/false)
Double 双精度浮点型,用于存储浮点型(小数)数据
Min/Max keys 将一个值与 BSON 元素的最低值和最高值相对比
Array 数组类型,用于将数组、列表或多个值存储在一个键中
Timestamp 时间戳,记录文档修改或添加的具体时间
Object 用于内嵌文档
Null 用于创建空值
Symbol 符号,该数据类型于字符串类型类似,不同的是,它一般用于采用特殊符号类型的语言
Date 日期时间,用 UNIX 时间格式来存储当前日期或时间,您可以创建 Date 对象并将 date、month、year 的值传递给 Date 对象来指定自己的日期时间
Object ID 对象 ID,用于创建文档的 ID
Binary Data 二进制数据,用于存储二进制数据
Code 代码类型,用于在文档中存储 JavaScript 代码
Regular expression 正则表达式类型,用于存储正则表达式

下面简单介绍一下其中几个比较重要的类型:

Object ID

Object ID 类似于关系型数据库中的主键 ID,在 MongoDB 中 Object ID 由 12 字节的字符组成,其中:
  • 前 4 个字节表示当前的 Unix 时间戳;
  • 之后的 3 个字节是当前设备的机器标识码;
  • 再之后的 2 个字节是 MongoDB 服务器的进程 id;
  • 最后 3 个字节为计数器,计数器的起始值随机获得。
601e2b6b aa203c c89f 2d31aa
  ↑      ↑     ↑     ↑
时间戳  机器码 进程id 计数器

Timestamps

Timestamps(时间戳)类型用来在 MongoDB 的内部使用,与 Date 类型不同,Timestamps 由一个 64 位的值构成,其中:
  • 前 32 位是一个 Unix 时间戳(由 Unix 纪元(1970.1.1)开始到现在经过的秒数);
  • 后 32 位是一秒内的操作序数。

在一个 MongoDB 实例中,时间戳是唯一的,而且主要在 MongoDB 内部使用,在应用开发中,您可以使用 Date 类型来定义时间日期。

Date

Date 类型是一个 64 位的对象,其中存放了从 Unix 纪元(1970.1.1)开始到现在经历的毫秒数,Date 类型是有符号的,负值则表示 1970.1.1 之前的时间。

> var mydate = new Date()
> mydate
ISODate("2021-02-06T08:50:37.024Z")
> typeof mydate
object