MongoDB做为*火爆的文档存储种类的NoSQL数据库查询,很多的企业在应用它。这书以合乎新手的思维模式,系统软件全方位、逐层层递地详细介绍了MongoDB数据库查询,根据这书的学习培训,读者可以担任实际上办公环境中MongoDB的相关开发管理方面。
这书共有四个一部分23章,第一一部分解读了MongoDB的相关定义和原理及其其內部工作方案,能够让读者对MongoDB有一个全方位的了解。第二一部分和第三一部分从运用视角,融合案例解读了MongoDB的安裝、配备、部署、开发、集群部署和管理方法等在实际上工作上会采用的专业技能。第四一部分是工作经验一部分,这些是创作者很多年应用MongoDB后小结的方法,对读者工作中应用MongoDB有巨大的指导意义。
这书合适MongoDB的新手,期待深层次掌握MongoDB安裝部署、开发提升的前端工程师,期待深层次掌握MongoDB管理方法、集群拓展的统计数据运维管理员,及其一切对MongoDB相关技术性很感兴趣的读者。
目录
- 第一部分 基础与架构理论篇
- 第1章 初识MongoDB 3
- 1.1 MongoDB简介 3
- 1.1.1 MongoDB是什么 3
- 1.1.2 MongoDB的历史 3
- 1.1.3 MongoDB的发展情况 4
- 1.1.4 哪些公司在用MongoDB 5
- 1.2 MongoDB的特点 5
- 1.3 MongoDB应用场景 6
- 1.3.1 MongoDB适用于以下场景 6
- 1.3.2 MongoDB不适合的场景 7
- 第2章 MongoDB的结构 8
- 2.1 数据库 8
- 2.1.1 数据库的层次 8
- 2.1.2 数据的命名 8
- 2.1.3 自带数据库 9
- 2.2 普通集合 9
- 2.2.1 集合是什么 9
- 2.2.2 集合的特点—无模式 9
- 2.2.3 集合命名 9
- 2.2.4 子集合 10
- 2.3 固定集合(Capped) 10
- 2.3.1 Capped简介 10
- 2.3.2 Capped属性特点 10
- 2.3.3 Capped应用场景 10
- 2.4 文档 11
- 2.4.1 文档简介 11
- 2.4.2 文档的特点 11
- 2.4.3 文档的键名命名规则 11
- 2.5 数据类型 11
- 2.5.1 基本数据类型 11
- 2.5.2 数字类型说明 12
- 2.5.3 日期类型说明 14
- 2.5.4 数组类型说明 16
- 2.5.5 内嵌文档类型说明 16
- 2.5.6 _id键和ObjectId对象说明 17
- 2.5.7 二进制类型说明——小文件存储 19
- 2.6 索引简介 19
- 2.6.1 什么是索引 19
- 2.6.2 索引的作用 20
- 2.6.3 普通索引 20
- 2.6.4 唯一索引 20
- 2.6.5 地理空间索引 21
- 第3章 MongoDB的大文件存储规范GridFs 22
- 3.1 GridFS简介 22
- 3.2 GridFS原理 23
- 3.3 GridFS应用场景 24
- 3.4 GridFS的局限性 24
- 第4章 MongoDB的分布式运算模型MapReduce 25
- 4.1 MapReduce简介 25
- 4.2 MapReduce原理 26
- 4.3 MapReduce应用场景 28
- 第5章 MongoDB存储原理 29
- 5.1 存取工作流程 29
- 5.2 存储引擎 30
- 5.2.1 MMAP引擎 31
- 5.2.2 MMAPv1引擎 31
- 5.2.3 WiredTiger引擎 32
- 5.2.4 In-Memory 33
- 5.2.5 引擎的选择 34
- 5.2.6 未来的引擎 34
- 第6章 了解MongoDB复制集 35
- 6.1 复制集简介 35
- 6.1.1 主从复制和副本集 35
- 6.1.2 副本集的特点 38
- 6.2 副本集工作原理 38
- 6.2.1 oplog(操作日志) 38
- 6.2.2 数据同步 39
- 6.2.3 复制状态和本地数据库 39
- 6.2.4 阻塞复制 40
- 6.2.5 心跳机制 40
- 6.2.6 选举机制 41
- 6.2.7 数据回滚 42
- 第7章 了解MongoDB分片 43
- 7.1 分片的简介 43
- 7.2 分片的工作原理 44
- 7.2.1 数据分流 44
- 7.2.2 chunkSize和块的拆分 47
- 7.2.3 平衡器和块的迁移 47
- 7.3 分片的应用场景 48
- 第二部分 管理与开发入门篇
- 第8章 安装MongoDB 51
- 8.1 版本和平台的选择 51
- 8.1.1 版本的选择 51
- 8.1.2 平台的选择 52
- 8.1.3 32位和64位 52
- 8.2 Windows系统安装MongoDB 53
- 8.2.1 查看安装环境 53
- 8.2.2 安装步骤 53
- 8.2.3 目录文件了解 55
- 8.3 Linux系统安装MongoDB 56
- 8.3.1 虚拟机简介 56
- 8.3.2 虚拟机安装以及安装Linux系统 58
- 8.3.3 安装MongoDB 67
- 8.4 Mac OSX系统安装MongoDB 73
- 8.4.1 查看安装环境 73
- 8.4.2 官网安装包安装 73
- 8.4.3 Mac软件仓库安装 74
- 第9章 启动和停止MongoDB 75
- 9.1 命令行方式启动和参数 75
- 9.1.1 Windows系统命令行启动MongoDB 75
- 9.1.2 Linux系统命令行启动MongoDB 76
- 9.1.3 Mac OS 系统命令行启动MongoDB 79
- 9.2 启动参数 80
- 9.3 配置文件方式启动 82
- 9.4 启动MongoDB客户端 84
- 9.5 关闭MongoDB 84
- 9.5.1 Windows系统设置MongoDB关闭 84
- 9.5.2 Linux系统设置MongoDB关闭 86
- 9.5.3 Mac OS系统设置MongoDB关闭 87
- 9.6 设置MongoDB开机启动 88
- 9.6.1 Windows系统设置MongoDB开机启动 88
- 9.6.2 Linux系统设置MongoDB开机启动 89
- 9.6.3 Mac OS系统设置MongoDB开机启动 93
- 9.7 修复未正常关闭的MongoDB 96
- 第10章 基本命令 97
- 10.1 数据库常用命令 97
- 10.2 集合 99
- 10.3 文档 101
- 10.4 索引 104
- 10.5 基本查询 106
- 10.5.1 find简介 106
- 10.5.2 游标 107
- 10.6 条件查询 108
- 10.6.1 与操作 108
- 10.6.2 或操作$or 108
- 10.6.3 大于$gt 108
- 10.6.4 小于$lt 108
- 10.6.5 大于等于$gte 108
- 10.6.6 小于等于$lte 108
- 10.6.7 类型查询$type 108
- 10.6.8 是否存在$exists 109
- 10.6.9 取模$mod 109
- 10.6.10 不等于$ne 109
- 10.6.11 包含$in 110
- 10.6.12 不包含$nin 110
- 10.6.13 $not: 反匹配 110
- 10.7 特定类型查询 110
- 10.7.1 null 110
- 10.7.2 正则查询(模糊查询) 110
- 10.7.3 嵌套文档 112
- 10.7.4 数组 112
- 10.8 高级查询$where 115
- 10.8.1 JavaScript语言简介 115
- 10.8.2 JavaScript编程简单例子 115
- 10.8.3 JavaScript与$where结合使用 115
- 10.9 查询辅助 116
- 10.9.1 条数限制limit 116
- 10.9.2 起始位置skip 116
- 10.9.3 排序sort 116
- 10.10 修改器 116
- 10.10.1 $set 116
- 10.10.2 $unset 117
- 10.10.3 $inc 117
- 10.10.4 $push 117
- 10.10.5 $pushAll 117
- 10.10.6 $pull 117
- 10.10.7 $addToSet 118
- 10.10.8 $pop 118
- 10.10.9 $rename 118
- 10.10.10 $bit 118
- 10.11 原生聚合运算 119
- 10.11.1 数量查询count 119
- 10.11.2 不同值distinct 119
- 10.11.3 分组group 120
- 10.11.4 灵活统计MapReduce 123
- 10.12 聚合管道 127
- 10.12.1 aggregate用法 127
- 10.12.2 管道操作器 128
- 10.12.3 管道表达式 139
- 10.12.4 复合使用示例 141
- 第11章 GUI工具:数据库外部管理工具 144
- 11.1 MongoDB的GUI工具简介 144
- 11.2 Robomongo基本操作 144
- 11.2.1 连接MongoDB 145
- 11.2.2 创建删除数据库 145
- 11.2.3 插入文档 145
- 11.2.4 查询文档 146
- 11.2.5 更新文档 146
- 11.2.6 创建索引 147
- 11.2.7 执行JavaScript 148
- 第12章 监控 149
- 12.1 原生管理接口监控 149
- 12.2 使用serverStatus在Shell监控 150
- 12.3 使用mongostat在Shell监控 151
- 12.4 使用第三方插件监控 152
- 第13章 安全和访问控制 153
- 13.1 绑定监听ip 153
- 13.2 设置监听端口 154
- 13.3 用户认证 154
- 13.3.1 启用认证 154
- 13.3.2 添加用户 155
- 13.3.3 用户权限控制 155
- 13.3.4 用户登录 157
- 13.3.5 修改密码 157
- 13.3.6 删除用户 157
- 第14章 数据管理 158
- 14.1 数据备份mongodump 158
- 14.2 数据恢复mongorestore 159
- 14.3 数据导出mongoexport 159
- 14.3.1 导出JSON格式 159
- 14.3.2 导出CSV格式 159
- 14.4 数据导入mongoimport 160
- 14.4.1 JSON格式导入 160
- 14.4.2 CSV格式导入 160
- 第15章 MongoDB驱动 161
- 15.1 MongoDB驱动支持的开发语言 161
- 15.2 驱动使用流程 163
- 第16章 Java操作MongoDB 165
- 16.1 安装JDK 165
- 16.2 Eclipse安装 166
- 16.3 加载驱动 167
- 16.4 查阅Java操作语法 167
- 16.5 测试操作 168
- 16.5.1 连接数据库 168
- 16.5.2 插入数据 169
- 16.5.3 查询数据 170
- 16.5.4 更新数据 170
- 16.5.5 删除数据 171
- 16.5.6 聚合方法执行 171
- 16.5.7 操作GridFS 172
- 16.5.8 运行示例 173
- 第三部分 管理与开发进阶篇
- 第17章 副本集部署 177
- 17.1 总体思路 177
- 17.2 MongoDB环境准备 178
- 17.3 创建目录 181
- 17.4 创建Key 182
- 17.5 初始化副本集 183
- 17.6 数据同步测试 190
- 17.7 故障切换测试 192
- 17.8 Java程序连接MongoDB副本集测试 194
- 17.9 主从复制部署 196
- 第18章 分片部署 198
- 18.1 总体思路 198
- 18.2 创建3个Shard Server 201
- 18.2.1 创建目录 201
- 18.2.2 以分片Shard Server模式启动 201
- 18.3 启动Config Server 202
- 18.3.1 创建目录 202
- 18.3.2 以分片Config Server模式启动 202
- 18.4 启动Route Process 203
- 18.5 配置sharding 204
- 18.6 对数据库mytest启用分片 205
- 18.7 集合启用分片 206
- 18.8 分片集群插入数据测试 208
- 18.9 分片的管理 209
- 18.9.1 移除Shard Server,回收数据 209
- 18.9.2 新增Shard Server 211
- 第19章 分片+副本集部署 212
- 19.1 总体思路 212
- 19.2 创建3个复制集 215
- 19.2.1 创建目录 215
- 19.2.2 以复制集模式启动 215
- 19.2.3 初始化复制集 216
- 19.3 创建分片需要的Config Server与Route Process 217
- 19.3.1 创建目录 217
- 19.3.2 启动Config Server、Route Process 218
- 19.4 配置分片 219
- 第20章 springMVC+maven+MongoDB框架搭建 221
- 20.1 SpringMVC和Maven简介 221
- 20.2 Eclipse安装Maven插件 221
- 20.3 新建Maven类型的Web项目 222
- 20.4 搭建SpringMVC+MongoDB框架 224
- 20.4.1 jar包引入 224
- 20.4.2 新建SpringMVC配置文件 228
- 20.4.3 新建MongoDB配置文件 230
- 20.4.4 配置web.xml 231
- 20.4.5 创建index.jsp和IndexController 232
- 20.4.6 启动Web项目 233
- 第21章 注册登录功能的实现 235
- 21.1 UI框架Bootstrap 235
- 21.1.1 简介 235
- 21.1.2 应用Bootstrap 235
- 21.2 新建用户实体 236
- 21.3 注册功能编写 237
- 21.3.1 注册页面代码 237
- 21.3.2 注册后端代码 239
- 21.4 登录功能编写 241
- 21.4.1 登录页面代码 241
- 21.4.2 登录后端代码 243
- 21.5 运行测试 244
- 21.6 Sping Data MongoDB操作 246
- 21.6.1 插入数据 247
- 21.6.2 查询数据 247
- 21.6.3 更新数据 249
- 21.6.4 删除数据 250
- 21.6.5 聚合方法执行 250
- 21.6.6 操作GridFS 251
- 21.6.7 运行示例 253
- 第四部分 管理与开发经验篇
- 第22章 MongoDB开发的经验 257
- 22.1 尽量选取稳定新版本64位的MongoDB 257
- 22.2 数据结构的设计 257
- 22.3 查询的技巧 259
- 22.4 安全写入数据 262
- 22.5 索引设置的技巧 264
- 22.6 不要用GridFS处理小的二进制文件 268
- 22.7 优化器profiler 269
- 第23章 MongoDB管理的经验 271
- 23.1 MongoDB安全管理 271
- 23.2 不要将MongoDB与其他服务部署到同一台机器上 273
- 23.3 单机开启日志Journal,多机器使用副本集 274
- 23.4 生产环境不要信任repair恢复的数据 275
- 23.5 副本集管理 276
- 23.6 副本集回滚丢失的数据 278
- 23.7 分片的管理 279
- 23.8 MongoDB锁 280
- 附录 A MongoDB地理位置距离单位 285
- 附录 B 相关网址 287