MongoDB的使用场景和Redis基本一致,但MongoDB的存储方式和Redis不同,且运行效率比Redis低,好处是MongoDB对内存依赖远小于Redis,数据以BSON类型存储在磁盘上,和JSON类型类似
MondoDB和MySQL的区别:
MySQL | MongoDB | 说明 |
---|---|---|
database | database | 数据库 |
table | collection | 表 / 集合 |
row | document | 数据行 / 文档 |
column | field | 字段 / 域 |
index | index | 索引 |
table join | 嵌入文档 | MongoDB的表连接为嵌入文档 |
primary key | primary key | MongoDB自动将_id设为主键 |
MongoDB数据模型BSON详解:
数据类型 | 描述 | 举例 |
---|---|---|
字符串 | UTF-8字符串都可表示为字符串类型的数据 | {“x” : “foobar”} |
对象id | 对象id是文档的12字节的唯一 ID | {“X” :ObjectId() } |
布尔值 | 真或者假:true或者false | {“x”:true}+ |
数组 | 值的集合或者列表可以表示成数组 | {“x” : [“a”, “b”, “c”]} |
32位整数 | 类型不可用。JavaScript仅支持64位浮点数,所以32位整数会被 |
自动转换。 | shell是不支持该类型的,shell中默认会转换成64
位浮点数 |
| 64位整数 | 不支持这个类型。shell会使用一个特殊的内嵌文档来显示64位
整数 | shell是不支持该类型的,shell中默认会转换成64
位浮点数 |
| 64位浮点数 | shell中的数字就是这一种类型 | {“x”:3.14159,”y”:3}
|
| null | 表示空值或者未定义的对象 | {“x”:null}
|
| undefined | 文档中也可以使用未定义类型 | {“x”:undefined}
|
| 符号 | shell不支持,shell会将数据库中的符号类型的数据自动转换成
字符串 |
|
| 正则表达式 | 文档中可以包含正则表达式,采用JavaScript的正则表达式语法 | {“x” : /foobar/i}
|
| 代码 | 文档中还可以包含JavaScript代码 | {“x” : function() { / …… / }}
|
| 二进制数据 | 二进制数据可以由任意字节的串组成,不过shell中无法使用
|
|
| 最大值/最
小值
| BSON包括一个特殊类型,表示可能的最大值。shell中没有这个
类型。
|
|