第1篇 基础篇 2
第1章 MongoDB简介 2
1.1 关系型数据库简介 2
1.2 关系型数据库面临的问题 3
1.3 NoSQL的崛起 5
1.4 MongoDB是如何解决这些问题的 6
1.5 初识MongoDB 8
1.5.1 MongoDB的特点 8
1.5.2 数据模型 9
1.5.3 扩展性 11
1.5.4 功能性 11
1.5.5 速度快 12
1.5.6 简便的管理 13
1.5.7 使用场合 13
1.6 本章小结 14
第2章 MongoDB基本原理与安装 15
2.1 数据库结构 15
2.2 文档 17
2.3 集合 18
2.3.1 集合的无模式 19
2.3.2 集合的命名 19
2.4 MongoDB数据类型 20
2.4.1 基本数据类型 20
2.4.2 数字类型 21
2.4.3 日期类型 21
2.4.4 数组类型 22
2.4.5 内嵌文档类型 22
2.4.6 _id键和ObjectId对象 22
2.5 MongoDB的下载和安装 24
2.5.1 MongoDB的下载 24
2.5.2 在Windows平台下的下载与安装 25
2.5.3 在Linux平台下的下载与安装 28
2.6 MongoDB shell的使用 31
2.6.1 启动Shell 31
2.6.2 使用Shell对MongoDB的基本操作 32
2.6.3 使用Shell的诀窍 33
2.6.4 特殊的集合名 34
2.7 本章小结 35
第3章 文档的增加、修改及删除 36
3.1 插入并保存文档 36
3.1.1 插入的原理和作用 37
3.1.2 批量插入 37
3.2 删除文档 38
3.3 修改文档 39
3.3.1 整个文档的替换 39
3.3.2 使用修改器 42
3.3.3 upsert和save更新 56
3.3.4 修改多个文档 60
3.3.5 修改文档并返回修改后的文档 63
3.4 数据库响应 67
3.4.1 安全操作 67
3.4.2 捕获异常 67
3.5 客户端请求和MongoDB数据库连接 68
3.6 本章小结 69
第2篇 应用篇 72
第4章 查询 72
4.1 find简介 72
4.1.1 返回指定的键 73
4.1.2 find查询限制 74
4.2 条件操作符 75
4.2.1 $all匹配所有 78
4.2.2 $exists判断字段是否存在 79
4.2.3 null值处理 80
4.2.4 $mod取模运算 81
4.2.5 $ne不等于 82
4.2.6 $in包含 83
4.2.7 $nin不包含 83
4.2.8 $size数组元素个数 84
4.2.9 正则表达式匹配 84
4.2.10 Javascript查询和$where查询 86
4.2.11 count查询记录条数 88
4.2.12 limit限制返回记录数 89
4.2.13 skip限制返回记录的起点 89
4.2.14 sort排序 90
4.2.15 分页查询 92
4.2.16 随机抽取文档 96
4.3 distinct找出给定键所有不同的值 97
4.4 group分组 98
4.4.1 使用完成器 105
4.4.2 将函数作为键使用 107
4.5 游标 110
4.6 存储过程 112
4.7 本章小结 113
第5章 Capped集合 114
5.1 特性 114
5.2 使用和约束 114
5.3 应用 114
5.3.1 创建capped collection 115
5.3.2 限制capped collection中对象个数 115
5.4 注意事项 117
5.5 本章小结 117
第6章 GridFS存储文件 118
6.1 为什么要用GridFS 118
6.2 如何实现海量存储 118
6.3 语言支持 118
6.4 简单介绍 119
6.5 命令行工具 119
6.6 内部原理 122
6.7 本章小结 124
第7章 MapReduce统计 126
7.1 Map函数 126
7.2 Reduce函数 127
7.3 结果存储 127
7.4 对Reduce函数结果进一步处理 129
7.5 其他控制细节 130
7.6 本章小结 131
第3篇 管理篇 134
第8章 管理 134
8.1 启动和停止MongoDB 134
8.1.1 使用命令行启动 134
8.1.2 配置文件 136
8.1.3 Daemon方式启动 137
8.1.4 mongod参数说明 138
8.1.5 停止数据库 139
8.2 访问控制 142
8.2.1 绑定IP内网地址访问MongoDB服务 142
8.2.2 设置监听端口 142
8.2.3 使用用户名和口令登录 143
8.3 命令行操作 147
8.3.1 通过eval参数执行指定语句 147
8.3.2 执行指定文件中的内容 147
8.4 进程控制 149
8.4.1 查看活动进程 149
8.4.2 结束进程 151
8.5 监控 152
8.5.1 使用管理接口 152
8.5.2 serverStatus 154
8.5.3 mongostat 156
8.5.4 第三方插件 157
8.6 数据导出mongoexport 157
8.6.1 常用导出方法 158
8.6.2 导出CSV格式的文件 159
8.7 数据导入mongoimport 161
8.7.1 导入JSON数据 161
8.7.2 导入CSV数据 162
8.8 数据备份和修复 163
8.8.1 数据文件备份 163
8.8.2 数据备份mongodump 163
8.8.3 数据恢复mongorestore 165
8.8.4 fsync和锁 167
8.8.5 从属备份 168
8.8.6 修复 168
8.9 本章小结 169
第4篇 性能篇 171
第9章 索引 171
9.1 索引简介 171
9.1.1 基础索引 171
9.1.2 文档索引 173
9.1.3 组合索引 175
9.1.4 唯一索引 177
9.1.5 强制使用索引 178
9.1.6 扩展索引 180
9.1.7 索引内嵌文档中的键 180
9.1.8 为排序创建索引 181
9.1.9 索引名称 181
9.1.10 删除索引 182
9.2 explain执行计划 185
9.3 优化器profiler 191
9.3.1 开启profiler功能 191
9.3.2 查询profiler日志 192
9.4 索引管理 192
9.5 本章小结 193
第10章 性能优化 195
10.1 优化方案 195
10.1.1 优化方案1:创建索引 195
10.1.2 优化方案2:限定返回结果条数 195
10.1.3 优化方案3:只查询使用到的字段,而不查询所有字段 196
10.1.4 优化方案4:采用capped集合 196
10.1.5 优化方案5:采用Server Side Code Execution 196
10.1.6 优化方案6:hint 196
10.1.7 优化方案7:采用profiling 197
10.2 性能监控 197
10.2.1 mongosniff底层监控 197
10.2.2 mongostat查看运行中的实例统计信息 199
10.2.3 db.serverStatuss查看实例运行状态 200
10.2.4 db.stats查看数据库状态 203
10.2.5 第三方工具 205
10.3 本章小结 205
第5篇 架构篇 208
第11章 复制集 208
11.1 主从复制 208
11.1.1 选项 210
11.1.2 添加及删除源 211
11.2 复制集 212
11.2.1 部署复制集 213
11.2.2 初始化复制集 214
11.2.3 复制集中的节点 215
11.2.4 故障切换和活跃节点选举 216
11.3 主从配置信息 217
11.4 管理维护复制集 219
11.4.1 读写分离 219
11.4.2 故障转移 220
11.4.3 增减节点 222
11.5 工作原理 228
11.5.1 主从操作日志oplog 229
11.5.2 同步 230
11.5.3 复制状态和本地数据库 230
11.5.4 阻塞复制 231
11.6 管理 232
11.6.1 诊断 232
11.6.2 变更oplog的大小 232
11.6.3 复制的认证问题 233
11.7 本章小结 233
第12章 sharding分片 234
12.1 分片简介 234
12.2 MongoDB中的自动分片 234
12.3 片键 235
12.3.1 将已有的集合分片 236
12.3.2 递增片键还是随机片键 236
12.3.3 片键对操作的影响 236
12.4 建立分片 237
12.4.1 启动Config Server配置服务器 238
12.4.2 启动mongos路由 238
12.4.3 启动Shard Server服务器 239
12.4.4 配置Sharding 239
12.4.5 验证Sharding正常工作 240
12.5 管理维护Sharding 242
12.5.1 列出所有的Shard Server 242
12.5.2 查看Sharding信息 242
12.5.3 判断是否是Sharding 243
12.5.4 对现有的集合进行Sharding 243
12.5.5 新增Shard Server 245
12.5.6 移除Shard Server 247
12.6 本章小结 249
第13章 复制集+shardin分片体 251
13.1 创建数据目录 251
13.2 配置复制集 251
13.2.1 配置shard1所用到的复制集 251
13.2.2 配置shard2所用到的复制集 252
13.3 配置多台Config Server 253
13.4 配置多台mongos 253
13.5 配置Shard Cluster 254
13.6 验证Sharding正常工作 254
13.7 管理分片 255
13.7.1 配置集合 255
13.7.2 分片命令 257
13.8 本章小结 258
第6篇 实例篇 260
第14章 实际项目搭建Mongo DB环境 260
14.1 环境搭建实例 260
14.1.1 服务器信息 260
14.1.2 分片结果表 260
14.1.3 复制集+sharding分片架构图 261
14.1.4 MongoDB环境搭建步骤 261
14.2 遇到的问题 281
14.3 本章小结 282
第15章 Java对MongoDB的基本操作实例15.1 Java快速入门 283
15.1.1 安装Java驱动程序和开发环境 283
15.1.2 访问控制 285
15.1.3 Java对MongoDB数据库的基本操作 286
15.1.4 Java驱动的一致性 292
15.2 Java常用操作 293
15.2.1 Java对MongoDB的操作实例 293
15.2.2 对用户的操作 297
15.2.3 对集合的操作 300
15.2.4 对索引的操作 310
15.3 Java高级查询 315
15.3.1 通过游标获取所有的文档 315
15.3.2 比较运算符 316
15.3.3 逻辑运算符 327
15.3.4 正则表达式查询 328
15.3.5 skip跳过查询 330
15.4 Java操作GridFS 331
15.4.1 上传文件 331
15.4.2 查询数据 333
15.4.3 下载文件 334
15.4.4 删除数据 336
15.5 本章小结 337
第16章 C#对MongoDB的基本操作实例16.1 C#快速入门 338
16.1.1 下载驱动和配置开发环境 338
16.1.2 访问控制 340
16.1.3 C#对数据库的基础操作 341
16.2 C#驱动一致性 345
16.3 C#常用操作 346
16.3.1 对MongoDB的操作实例 346
16.3.2 对用户的操作 349
16.3.3 对集合的操作 352
16.3.4 对索引的操作 359
16.4 C#高级查询 362
16.4.1 判断列名是否存在 362
16.4.2 比较运算符 364
16.4.3 逻辑运算符 370
16.4.4 正则表达式查询 372
16.4.5 跳过查询 373
16.5 C#操作GridFS 374
16.5.1 上传文件 374
16.5.2 查询数据 375
16.5.3 下载文件 376
16.5.4 删除数据 377
16.6 本章小结 378