MongoDB的数据类型
数据类型 |
描述 |
举例 |
null |
表示空值或者未定义的对象 |
{“x”:null} |
布尔值 |
true或者false |
{“x”:true} |
32位整数 |
32位整数 shell中不支持 |
Shell中会转换位64位浮点数 |
64位整数 |
64位整数 shell中不支持 |
Shell中会转换位64位浮点数 |
64位浮点数 |
64位浮点数 |
{”x”:3.14,“y”:3} |
字符串 |
Utf-8字符串 |
{“foo”:“bar”} |
符号 |
shell不支持 |
Shell会将符号转换为字符串 |
对象id |
文档的12字节的唯一id |
{“id”:ObjectId()} |
日期 |
从标准纪元开始的毫秒数 |
{“date”:new Date()} |
正则表达式 |
文档中可以包含正则表达式,遵循JavaScript的语法 |
{“foo”:/foobar/i}
|
代码 |
文档中可以包含javaScript代码 |
{“x”:function(){}} |
二进制数据 |
任意字节的二进制串组成shell不支持 |
|
最大值 |
BSON包括一个特殊类型,表示可能的最大值,shell不支持 |
|
最小值 |
BSON包括一个特殊类型,表示可能的最小值,shell不支持 |
|
未定义 |
undefined shell不支持 |
{“x”:undefined} |
数组 |
指的集合或列表 |
{“arr”:[“a”,”b”]} |
内嵌文档 |
文档可以作为文档中某个key的value |
{“x”:{“foo”:“bar”}} |
ObjectId(0~11)
- 对象id类型是一个12字节的唯一id。每个字节2位16进制数,因此整个id类型是一个24位的字符串
- 前面四个字节代表从标准纪元开始的事件戳,以秒为单位
- 接下来3个字节代表机器号,一般是机器的hash值。这可以保证不同的及其产生的id不会冲突
- 接下来两个字节表示进程id号,保证统一机器不同建成产生的id不冲突
- 最后三个是计数器的技术支持,对于任意一秒钟,可以产生2^24个数