JSON和BSON
JSON是一种简单的数据表示方式,它易于理解、易于解析、易于记忆。但从另一方面来说,因为只有null、布尔、数字、字符串、数组和对象这几种数据类型,所以JSON有一定局限性。例如,JSON没有日期类型,JSON只有一种数字类型,无法区分浮点数和整数,更别说区分32为和64位数字了。再者,JSON无法表示其他一些通用类型,如正则表达式或函数。
BSON(Binary Serialized Document Format)是一种类JSON的二进制形式的存储格式,简称Binary JSON。它和JSON一样,支持内嵌的文档对象和数组对象,但是BSON有JSON没有的一些数据类型,如Date和BinData类型。它支持下面数据类型。每个数据类型对应一个数字,在MongoDB中可以使用$type操作符查看相应的文档的BSON类型
Mongodb数据类型
|
|
|
---|---|---|
Double | {“key”:“8.21”} | 存储64位整数,shell客户端显示的数字都是这种类型 |
String | {“key”:“value”} | 字符串,UTF-8格式 |
Object | 对象 | |
Array | {“key”:[1,2,3]} | 数组,集合或者列表 |
Binary data | 二进制数据,主要存储文件 | |
ObjectId | {“key”:ObjectId()} | 12字节的唯一ID |
Boolean | {“key”:“true”} | 布尔类型表示真或者假 |
Date | {“key”:new Date()} | 日期格式 |
Null | {“key”:null} | null表示空值或者不存在该字段 |
Regular Expression | 正则表达式 | |
32-bit integer | {“key”:8} | int,32位整数 |
64-bit integer | {“key”:8} | long,64位整数 |
Decimal128 | {“price”:NumberDecimal(“2.099”)} | 3.4版本新增的数据类型,对应java的类型为BigDecimal |