MongoDB的文档类似于JSON,概念上与JavaScript的对象类似。
但JSON仅包含6种数据类型:null、布尔、数字、字符串、数组和对象。
尽管这些类型的表现力已经足够强大,打仍有一些不可或缺的类型。JSON没有日期类型,使得处理日期问题变得繁琐。
只有一种数字类型,没法区分浮点数和整数,更不能区分32位和64位;它也不能表现正则表达式或函数。
MongoDB在保留JSON的键值特性基础上,添加一些其他的数据类型。
null
null表示空值或不存在的字段。
{"x":null}
布尔
布尔类型有两个值:true、false
{"x": true}
32位整数
在shell中,该类型不可用,javascript仅支持64位浮点数。
64位整数
shell会使用特殊的内嵌文档显示64位整数。
64位浮点数
shell中的数字类型
{"x": 3.14}
{"x": 3}
字符串
UTF-8字符串都可以表示为字符串类型
{"x":"foobar"}
符号
shell不支持,它将数据库里的符号类型转换为字符串
对象id
对象id是文档的12字节的唯一ID
{"x":ObjectId()}
日期
日期类型存储的是从标准纪元开始的毫秒数,不存储时区
{"x": new Date()}
正则表达式
文档中可以包含正则表达式,采用JavaScript的语法
{"x": /foobar/i}
代码
文档可以包含javascript代码
{"x": function(){...}}
二进制数据
二进制数据可以由任意字节的串组成,无法在shell使用
最大值
BSON包含的特殊类型,表示可能的最大值,shell不支持
最小值
BSON包含的特殊类型,表示可能的最小值,shell不支持
未定义
文档可以使用未定义类型(JavaScript中的undefined)
{"x":undefined}
数组
值的集合,或列表
{"x":["a","b","c"]}
内嵌文档
文档可以包含文档
{"x":{"foo":"bar"}}