JSON
1、什么是JSON
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。
JSON采用完全独立于语言的文本格式,但也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。
这些特性使JSON成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。
可以详细参考:http://www.json.org.cn/
2、JSON 数据的书写格式
名称/值对 对象
是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。
每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。
如: ({"firstName":"John"})
3、JSON仅支持以下数据类型
数字(整数或浮点数)
字符串(在双引号中)
逻辑值(true 或 false)
数组(在方括号中)
对象(在花括号中)
null
4、JSON基于两种结构:
“名称/值”对的集合(A collection of name/value pairs),在不同的编程语言中有不同的描述
如:对象(object),纪录(record),结构(struct),字典(dictionary)
哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)
值的有序列表。在大部分语言中,它被实现为数组(array),矢量(vector),列表(list),序列(sequence)
BSON
1、什么是BSON
BSON()是一种类json的一种二进制形式的存储格式,简称Binary JSON
它和JSON一样,支持内嵌的文档对象和数组对象,但是BSON有JSON没有的一些数据类型,如Date和BinData类型。
https://docs.mongodb.com/manual/reference/bson-types/
2、BSON的特性
轻量性、可遍历性、高效性
3、mongoDB与BSON
mongoDB对JSON串做了一些增加,使其可以支持更多的数据类型,并且将其作为存储结构
mongoDB这种格式转化成一文档这个概念(Document),因为BSON是schema-free的,所以在MongoDB中所对应的文档也有这个特征
mongoDB以BSON做为其存储结构的一种重要原因是其可遍历性
ObjectId
ObjectId 是一个12字节 BSON 类型数据,有以下格式:
前4个字节表示时间戳
接下来的3个字节是机器标识码
紧接的两个字节由进程id组成(PID)
最后三个字节是随机数。
MongoDB中存储的文档必须有一个"_id"键。这个键的值可以是任何类型的,默认是个ObjectId对象。
在一个集合里面,每个文档都有唯一的"_id"值,来确保集合里面每个文档都能被唯一标识。
MongoDB采用ObjectId,而不是其他比较常规的做法(比如自动增加的主键)的主要原因,因为在多个 服务器上同步自动增加主键值既费力还费时。