1 MongoDB简介 1
1.1 MongoDB概述 1
1.1.1 丰富的数据模型 1
1.1.2 易于扩展 1
1.1.3 丰富的功能 2
1.1.4 性能优越 2
1.1.5 便于管理 2
1.2 文档 3
1.3 集合 3
1.3.1 动态模式 4
1.3.2 命名 4
1.4 数据库 5
1.5 MongoDB安装和配置 6
1.6 M ongoDB shell简介 9
1.6.1 shell命令 10
1.6.2 MongoDB客户端 10
1.6.3 shell中的基本操作 11
1.6.4 使用shell的窍门 13
1.7 数据类型 16
1.7.1 基本数据类型 16
1.7.2 日期 18
1.7.3 数组 18
1.7.4 内嵌文档 19
1.7.5 _id和ObjectId 19
2 数据创建、更新及删除 22
2.1 插入并保存文档 22
2.1.1 批量插入 22
2.1.2 插入校验 23
2.2 删除文档 23
2.3 更新文档 24
2.3.1 文档替换 24
2.3.2 使用修改器 25
2.3.3 upsert 41
2.3.4 更新多个文档 44
2.3.5 返回已更新的文档 44
2.4 写入安全机制 47
3 查询 49
3.1 查询简介 49
3.1.1 指定需要返回的键 50
3.1.2 限制条件 50
3.2 查询条件 50
3.2.1 查询条件 50
3.2.2 OR查询 51
3.2.3 $not 52
3.2.4 条件语义 52
3.3 特定类型的查询 52
3.3.1 null 53
3.3.2 正则表达式 53
3.3.3 查询数组 53
3.3.4 查询内嵌文档 59
3.4 $where查询 61
3.5 游标 62
3.5.1 limit、skip和sort 63
3.5.2 避免使用skip略过大量结果 65
3.5.3 高级查询选项 67
3.5.4 获取一致结果 68
3.5.5 游标生命周期 69
3.6 数据库命令 70
4 索引 72
4.1 索引简介 72
4.1.1 复合索引简介 78
4.1.2 使用复合索引 84
4.1.3 $操作符如何使用索引 86
4.2 使用explain和hint 91
4.3 什么时候不应该使用索引 91
4.4 索引类型 92
4.4.1 唯一索引 92
4.4.2 稀疏索引 94
4.5 索引管理 95
4.5.1 标识索引 96
4.5.2 修改索引 97
5 聚合 98
5.1 聚合框架 98
5.2 管道操作符 100
5.2.1 $match 100
5.2.2 $project 100
5.2.3 $group 105
5.2.4 $unwind 108
5.2.5 $sort 109
5.2.6 $1imit 110
5.2.7 $skip 110
5.2.8 使用管道 110
5.3 MapReduce 110
5.3.1 找出集合中的所有键 111
5.3.2 网页分类 113
5.3.3 MongoDB和MapReduce 114
5.4 聚合命令 116
5.4.1 count 116
5.4.2 distinct 117
5.4.3 group 118
6 创建副本集 125
6.1 复制简介 125
6.2 配置副本集 126
6.2.1 rs辅助函数 128
6.2.2 网络注意事项 128
6.3 修改副本集配置 128
6.4 设计副本集 131
6.5 同步 135
6.5.1 初始化同步 135
6.5.2 处理陈旧数据 138
6.6 心跳 138
6.7 选举 139
6.8 回滚 140
7 分片 144
7.1 分片简介 144
7.2 理解集群的组件 144
7.3 快速建立一个简单的集群 146
7.4 何时分片 155
7.5 启动服务器 156
7.5.1 配置服务器 156
7.5.2 mongos进程 157
7.5.3 增加集群容量 157
7.5.4 数据分片 159
7.6 如何追踪集群数据 162
7.6.1 块范围 162
7.6.2 拆分块 164
7.7 均衡器 168
8 实战图书馆管理——Java桌面客户端 169
8.1 项目需求 169
8.2 系统设计 169
8.2.1 应用结构设计 170
8.2.2 MongoDB数据库——表设计 170
8.3 系统开发 170
8.3.1 新建Java项目 170
8.3.2 导入mongodb-java驱动 172
8.3.3 数据模型设计 177
8.3.4 控制器设计 179
8.3.5 界面设计 184
9 实战图书馆管理——Web开发 205
9.1 项目需求 205
9.2 系统设计 205
9.2.1 应用结构设计 205
9.2.2 数据库——表设计 206
9.3 系统开发 206
9.3.1 新建java-web项目 206
9.3.2 导入mongodb-java驱动 208
9.3.3 数据模型设计 208
9.3.4 控制器设计 208
9.3.5 界面设计 210
参考文献 216