目录
参考: https://docs.mongoing.com/
介绍
Mongodb 是一个开源的,高性能,五模式的文档行数据库,当初的设计就是用于简化开发和方便扩展,是 NoSQL 数据库产品中的一种。是最像关系型数据库 MYSQL 的非关系型和数据库
它支持的数据结构非常松散,是一种类似于 JSON 的格式,叫做 BSON , 所以它既可以存储比较复杂的数据类型,又相对灵活
Mongodb 中的记录是一个文档,它是一个由字段和值组成的数据结构,简称键值对结构,Mongodb 文档类似于 JSON 对象,即一个文档认为是一个对象,字段的数据类型是字符型,它的值除了使用基本的一些类型以外,还可以包括其他文档,普通数组和文档数组
体系结构
SQL 术语 | MongoDB 术语 | 说明 |
---|---|---|
database | database | 数据库 |
table | collection | 数据库表 / 集合 |
row | document | 数据记录行 / 文档 |
column | field | 数据记录列 / 域 |
index | index | 索引 |
table joins | 联表 | |
嵌入文档 | Mongodb 通过嵌入文档来替换多表连接 | |
primary key | primary key | 主键,Mongodb 会自动将 id 设置为主键 |
数据模型
Mongodb 的最小单位就是文档(document)对象,文档对象对应关系型数据库的行,数据在 Mongodb 中以 BSON 格式存储数据在磁盘上
BSON
BSON (Binary Serialized Document Format) 是一种类似 json 的一种二进制形式的存储,简称 Binary JSON , BSON 和 JSON 一样支持嵌套文档对象和数组对象,但是 BSON 还多出一些数据类型,比如:Date 和 BinD艾特类型
BSON 采用了类似 C 语言结构体的名称,对表示方法,支持内嵌的文档对象和数组对象,具有轻量性,可遍历性,高效性三个特点,可以有效描述非结构化数据和结构化数据。这种格式的优点是灵活性高,但是它的缺点是空间利用率不是很理想
BSON 中,除了基本的 JSON 类型, String ,Integer ,Boolean , Double , Null , Array 和 Object 。mongo 还使用了特殊的数据类型,这些类型包括 data , object id,binary data , regularexpression 和 code 。 每一个驱动都以特定的语言方式实现了这些类型,查看你的驱动的文档来获取详细信息
BSON 数据类型
数据类型 | 描述 | 举例 |
---|---|---|
string | UTF-8 字符串都可以表示为字符串类型的数据 | {“X”:"foober"} |
object id | 对象 id 是文档的 12 字节的唯一 id | {"X":ObjectId()} |
boolean | true / false | {"X":true}+ |
array | 值的集合或者列表可以表示成数组 | {“X”:["a","b","c"]} |
32位整数 | 类型不可用。js仅支持 64 位浮点数,所以该整数会被自动转换 | shell 也不支持,shell 会默认将其转换成 64 位 |
64位整数 | 不支持这个类型,js 仅支持 64 位浮点型,shell 会使用一个特殊的内嵌文档来显示 64 位整数 | 和上述一致 |
64位浮点型 | shell 中的数字就是这种类型 | {“X”:3.1415926,"y":3} |
null | 表示空值或者未定义的对象 | {“x”:null} |
undefined | 文档中也可以使用未定义类型 | {“x”:undefined} |