MongoDB 是由 C++ 语言编写, 一个基于分布式文件存储的非关系型数据库。
1、概念解析
- 文档:文档是一组键值(key-value)对(即 BSON), 列如 {"site":"www.runoob.com"},相当 Mysql 中的行数据。
- 集合:集合存在于数据库中,集合没有固定的结构,相当 Mysql 中的数据表。
- 列 | 域:相当 Mysql 中的字段, 不用预先定义。
2、常用数据类型
String | 字符串。存储数据常用的数据类型。在 MongoDB 中,UTF-8 编码的字符串才是合法的。 |
Integer | 整型数值,可分为 32 位或 64 位 |
Boolean | 布尔值 |
Double | 双精度浮点值 |
Array | 用于将数组或列表或多个值存储为一个键。 |
Timestamp | 时间戳 |
Object | 内嵌文档 |
Null | 用于创建空值 |
Date | 日期时间。用 UNIX 时间格式来存储当前日期或时间。你可以指定自己的日期时间:创建 Date 对象,传入年月日信息 |
Object ID | 对象 ID,用于创建文档的 ID。 |
Binary Data | 二进制数据 |
Code | 代码类型 |
Regular expression | 正则表达式类型 |
3、索引
- 单字段索引: 对单个字段创建的最简单的索引。
- 复合索引: 对多个字段同时创建的索引。
- 文本索引: 用于支持文本搜索的特殊索引类型。
- 哈希索引: 将字段的值散列成哈希值。
- 地理空间索引: 用于支持地理位置查询的特殊索引类型。
优点
1、采用异步IO的方式,单个线程同时处理多个IO请求, 提高数据库的并发能力。
2、多种类型的索引(单字段索引,复合索引,全文索引), 采用内存映射的方式, 将数据文件直接映射到内存中,提高读写性能。
3、支持持久化(硬盘)与预写式日志(写操作记录到日志文件中)。
4、采用文档模型,非结构化(非关系型数据库)。 可以直接将相关数据存储在一起,更加灵活。
5、高可拓展性(节点与分片的水平拓展)。
6、采用的是 Bson 数据结构, 可以存储更多的数据类型。