目 录
第1章 MongoDB简介 1
1.1 MongoDB概述 1
1.2 MongoDB的发展历史 4
1.3 MongoDB的优缺点 8
1.3.1 MongoDB的优点 8
1.3.2 MongoDB的缺点 9
1.4 常用概念 10
1.5 数据类型 11
1.6 本章小结 12
第2章 MongoDB的安装 13
2.1 在Windows系统上安装MongoDB 13
2.1.1 安装MongoDB 13
2.1.2 配置环境变量 20
2.1.3 其他安装形式 21
2.1.4 常见问题和注意事项 21
2.2 在Linux系统上安装MongoDB 22
2.2.1 使用yum方式安装MongoDB 22
2.2.2 卸载MongoDB 25
2.2.3 使用其他方式安装MongoDB 26
2.2.4 常见错误和注意事项 27
2.3 本章小结 27
第3章 MongoDB可视化管理工具 28
3.1 MongoDB Compass 28
3.1.1 MongoDB Compass的特点 28
3.1.2 MongoDB Compass的安装与更新 29
3.1.3 MongoDB Compass的使用 30
3.1.4 注意事项 33
3.2 Navicat Premium 33
3.2.1 Navicat Premium的功能特点 34
3.2.2 Navicat Premium的安装 35
3.2.3 Navicat Premium的使用 37
3.3 NoSQLBooster for MongoDB 40
3.3.1 NoSQLBooster for MongoDB的功能特点及使用场景 40
3.3.2 NoSQLBooster for MongoDB的安装 41
3.3.3 NoSQLBooster for MongoDB的使用 42
3.4 本章小结 48
第4章 MongoDB Shell(mongosh) 49
4.1 MongoDB Shell的安装 49
4.1.1 在Windows系统上安装MongoDB Shell 50
4.1.2 在Linux系统上安装MongoDB Shell 52
4.2 MongoDB Shell的配置 53
4.2.1 使用命令编辑器 53
4.2.2 配置设置 54
4.2.3 自定义mongosh提示 56
4.2.4 配置远程数据搜集 58
4.3 MongoDB Shell的运行命令 58
4.4 使用MongoDB Shell进行简单操作 59
4.4.1 新增 60
4.4.2 查询 61
4.4.3 修改 63
4.4.4 删除 66
4.5 客户端字段级加密 67
4.6 脚本 69
4.6.1 运行JavaScript脚本 69
4.6.2 运行配置文件中的代码 71
4.7 本章小结 73
第5章 数据库操作 74
5.1 基础操作 74
5.1.1 操作数据库 74
5.1.2 操作集合或视图 78
5.1.3 操作文档 86
5.2 文本搜索 86
5.3 地理空间查询 88
5.3.1 GeoJSON对象 88
5.3.2 传统坐标对 89
5.3.3 2dsphere索引 89
5.3.4 2d索引 95
5.4 常用的操作符 97
5.4.1 查询和投影操作符 97
5.4.2 更新操作符 100
5.4.3 聚合管道操作符 102
5.4.4 查询修饰符 103
5.5 本章小结 104
第6章 聚合 105
6.1 聚合方法 105
6.2 聚合管道 106
6.2.1 管道和阶段 107
6.2.2 管道操作符 107
6.2.3 管道表达式与表达式操作符 108
6.2.4 聚合操作 117
6.3 本章小结 124
第7章 数据模型 125
7.1 数据建模介绍 125
7.2 架构设计流程 126
7.2.1 确定工作负载 126
7.2.2 映射模式关系 127
7.2.3 应用设计模式 128
7.3 模型设计模式 130
7.3.1 分组数据 130
7.3.2 文档和模式版本控制 136
7.4 数据一致性 143
7.4.1 用例描述 143
7.4.2 强制执行事务的数据一致性 144
7.4.3 通过嵌入实现数据一致性 146
7.5 模式验证 148
7.5.1 模式验证使用场景 148
7.5.2 指定JSON schema验证 149
7.5.3 指定允许的字段值 151
7.5.4 使用查询运算符指定验证 152
7.5.5 指定现有文档的验证级别 153
7.5.5 指定现有文档的验证级别 156
7.5.6 选择如何处理无效文档 159
7.6 本章小结 161
第8章 时间序列 162
8.1 时间序列介绍 162
8.2 创建和查询时间序列集合 163
8.2.1 创建时间序列集合 163
8.2.2 在时间序列集合中插入测量值 164
8.2.3 查询时间序列集合 165
8.2.4 在时间序列集合上运行聚合 165
8.3 列出数据库中的时间序列集合 166
8.4 设置时间序列集合的自动删除 167
8.5 设置时间序列数据的粒度 168
8.6 向时间序列集合添加从节点索引 170
8.6.1 创建二级索引 170
8.6.2 使用二级索引提高排序性能 171
8.6.3 时间序列集合的最新数据点查询 172
8.7 本章小结 173
第9章 事务 174
9.1 事务基础原理 174
9.2 驱动程序API 176
9.2.1 回调API 176
9.2.2 核心API 177
9.2.3 事务错误处理 178
9.3 事务与操作 180
9.3.1 事务操作基础 180
9.3.2 在事务中创建集合和索引 180
9.3.3 计数、限制性与去重操作 181
9.4 读取偏好与读写关注 181
9.4.1 事务和读取偏好 181
9.4.2 事务和读关注 182
9.4.3 事务和写关注 182
9.5 本章小结 183
第10章 索引 184
10.1 索引介绍 184
10.2 创建索引 185
10.3 指定索引名称 186
10.4 删除索引 187
10.5 单字段索引 188
10.6 对嵌入式文档创建索引 189
10.7 复合索引 190
10.7.1 复合索引介绍 190
10.7.2 创建复合索引 191
10.7.3 复合索引排序顺序 192
10.8 多键索引 193
10.8.1 多键索引介绍 193
10.8.2 在数组字段上创建索引 195
10.8.3 为数组中的嵌入字段创建索引 196
10.8.4 多键索引边界 198
10.8.5 多键索引的复合边界 199
10.9 通配符索引 203
10.9.1 通配符索引介绍 203
10.9.2 对单个字段创建通配符索引 204
10.9.3 在通配符索引中包含或排除字段 205
10.9.4 对所有字段创建通配符索引 207
10.10 本章小结 209
第11章 副本集 210
11.1 副本集介绍 210
11.2 异步复制 212
11.3 自动故障转移 212
11.4 读取操作 213
11.4.1 读取偏好 213
11.4.2 数据可见性 214
11.4.3 镜像读 214
11.5 操作日志 215
11.5.1 操作日志基础 215
11.5.2 操作日志大小 215
11.5.3 最短操作日志保留期 216
11.5.4 可能需要更大操作日志的工作负载 216
11.5.5 操作日志状态 217
11.6 本章小结 217
第12章 分片 218
12.1 分片基础 218
12.1.1 分片介绍 218
12.1.2 分片键介绍 219
12.1.3 分片的优点 219
12.2 分片集群 220
12.2.1 分片集群的组成 220
12.2.2 生产配置 220
12.2.3 开发配置 221
12.3 分片键的应用 222
12.3.1 分片键索引 222
12.3.2 将集合分片 223
12.3.3 选择分片键 223
12.3.4 更改分片键 226
12.3.5 对集合重新分片 226
12.4 本章小结 229
第13章 存储 230
13.1 存储介绍 230
13.2 WiredTiger存储引擎 231
13.2.1 WiredTiger存储引擎介绍 231
13.2.2 事务(读写)并发 231
13.2.3 文档级并发性 231
13.2.4 快照和检查点 232
13.2.5 日志与压缩 232
13.2.6 内存使用 233
13.3 日志 233
13.3.1 日志和WiredTiger存储引擎 233
13.3.2 日志记录进程 234
13.3.3 Journal Files 234
13.3.4 日志和内存存储引擎 235
13.4 本章小结 235
第14章 安全性 236
14.1 安全性介绍 236
14.2 基于SCRAM的身份验证 237
14.2.1 SCRAM机制 237
14.2.2 使用SCRAM对客户端进行身份验证 238
14.3 基于x.509的身份验证 240
14.3.1 x.509机制 240
14.3.2 使用x.509对客户端进行身份验证 240
14.4 加密 242
14.4.1 加密方法 242
14.4.2 选择正在使用的加密方法 242
14.4.3 静态加密 243
14.4.4 TLS/SSL 244
14.5 本章小结 244
第15章 性能优化 245
15.1 性能优化概述 245
15.2 索引优化 246
15.3 查询优化 247
15.4 资源管理优化 248
15.5 本章小结 248