图书目录

目录

第1篇  基础篇

第1章  初识MongoDB世界——认识MongoDB 002

◎ 本章教学微视频

1.1  NoSQL 002

1.1.1  NoSQL简史 002

1.1.2  NoSQL的种类及其特性 003

1.1.3  NoSQL特点 004

1.1.4  NoSQL的优缺点 005

1.1.5  NoSQL与SQL数据库的比较 006

1.2  初识MongoDB 007

1.2.1  MongoDB是什么 007

1.2.2  MongoDB的体系结构 007

1.2.3  MongoDB的特点 008

1.2.4  MongoDB键特性 008

1.2.5  MongoDB的核心服务和工具 009

1.2.6  MongoDB应用场景 011

1.3  MongoDB数据模型 011

1.3.1  数据模型 011

1.3.2  多态模式 013

1.4  就业面试技巧与解析 014

1.4.1  面试技巧与解析(一) 014

1.4.2  面试技巧与解析(二) 015

第2章  MongoDB使用基础——MongoDB的安装与配置 016

◎ 本章教学微视频

2.1  MongoDB的安装配置 016

2.1.1  MongoDB的安装 016

2.1.2  配置Path环境变量 019

2.1.3  创建数据库文件的存放文件 020

2.1.4  启动MongoDB 021

2.1.5  配置本地Windows MongoDB服务 022

2.1.6  建立一个数据库 022

2.2  MongoDB可视化工具MongoDB Compass 024

2.2.1  下载Compass 024

2.2.2  安装Compass 024

2.2.3  连接MongoDB 026

2.2.4  创建数据库 027

2.2.5  创建集合 028

2.2.6  插入数据 028

2.2.7  批量导入数据 030

2.2.8  使用中的错误 030

2.3  就业面试技巧与解析 032

2.3.1  面试技巧与解析(一) 032

2.3.2  面试技巧与解析(二) 032

第3章  数据库程序的操作——MongoDB数据库的使用 033

◎ 本章教学微视频

3.1  MongoDB shell 033

3.1.1  MongoDB shell连接 033

3.1.2  MongoDB shell命令 034

3.1.3  MongoDB shell脚本编程 038

3.2  MongoDB的基本操作 038

3.2.1  MongoDB数据库的连接 038

3.2.2  数据库 039

3.2.3  集合 040

3.2.4  文档 041

3.2.5  数据类型 048

3.2.6  索引 048

3.3  就业面试技巧与解析 049

3.3.1  面试技巧与解析(一) 049

3.3.2  面试技巧与解析(二) 049

第2篇  提高篇

第4章  MongoDB内部的存储 052

◎ 本章教学微视频

4.1  存储引擎 052

4.1.1  MMAPv1引擎 052

4.1.2  WiredTiger引擎 056

4.1.3  In-Memory引擎 057

4.2  GridFS简介 058

4.2.1  GridFS原理 058

4.2.2  GridFS应用场景 060

4.2.3  GridFS的局限性 060

4.3  GridFS的使用 061

4.3.1  开始使用命令行工具 061

4.3.2  从GridFS中读取文件 062

4.4  WiredTiger的使用 063

4.5  WiredTiger的事务实现 066

4.5.1  WiredTiger事务的实现原理 067

4.5.2  WiredTiger事务过程 068

4.5.3  WiredTiger的事务隔离 068

4.5.4  WiredTiger的事务日志 070

4.6  就业面试技巧与解析 071

4.6.1  面试技巧与解析(一) 071

4.6.2  面试技巧与解析(二) 071

第5章  MongoDB的灵活查询 073

◎ 本章教学微视频

5.1  find查询 073

5.1.1  指定需要返回的键 074

5.1.2  限制 074

5.1.3  游标 074

5.2  条件查询 075

5.2.1  查询条件 075

5.2.2  OR查询 076

5.2.3  $not 076

5.2.4  条件语义 077

5.3  特定类型查询 077

5.3.1  null 077

5.3.2  正则查询(模糊查询) 078

5.3.3  嵌套文档 078

5.3.4  数组 080

5.4  文本搜索 082

5.4.1  定义文本搜索索引 082

5.4.2  $text操作 083

5.4.3  使用文本搜索 083

5.4.4  文本搜索语言 085

5.5  就业面试技巧与解析 085

5.5.1  面试技巧与解析(一) 085

5.5.2  面试技巧与解析(二) 086

第6章  常用的操作符——聚合 087

◎ 本章教学微视频

6.1  聚合框架 087

6.2  聚合管道操作符 089

6.2.1  $count 089

6.2.2  $group 090

6.2.3  $match 093

6.2.4  $unwind 094

6.2.5  $project 094

6.2.6  $limit 099

6.2.7  $skip 099

6.2.8  $sort 099

6.3  聚合运算 100

6.4  MapReduce 103

6.4.1  MapReduce原理 104

6.4.2  MapReduce的基本使用 105

6.4.3  MapReduce实例应用 108

6.5  聚合管道aggregate 110

6.6  就业面试技巧与解析 111

6.6.1  面试技巧与解析(一) 112

6.6.2  面试技巧与解析(二) 112

第7章  数据库的管理应用——MongoDB的管理 113

◎ 本章教学微视频

7.1  数据的导入导出 113

7.1.1  导出工具mongoexport 113

7.1.2  导入工具mongoimport 115

7.2  备份与恢复 116

7.2.1  mongodump备份工具 116

7.2.2  mongorestore数据恢复 117

7.2.3  fsync和锁 118

7.2.4  从属备份 119

7.3  MongoDB中的操作日志 120

7.4  安全认证 121

7.4.1  创建管理员 122

7.4.2  创建普通用户 122

7.4.3  配置mongo.config 123

7.4.4  MongoDB安全认证方式启动 123

7.4.5  客户端普通用户登录 123

7.4.6  客户端管理员登录 125

7.5  性能监控 125

7.5.1  mongostat 125

7.5.2  mongotop 126

7.5.3  Profile 127

7.5.4  serverStatus 127

7.5.5  db.stats()、db.c.stats() 128

7.5.6  db.collection.stats() 128

7.5.7  db.currentOp() 129

7.5.8  影响性能相关因素 129

7.6  就业面试技巧与解析 130

7.6.1  面试技巧与解析(一) 130

7.6.2  面试技巧与解析(二) 130

第3篇  核心技术篇

第8章  快速查找文档——索引及优化 132

◎ 本章教学微视频

8.1  索引的概述 132

8.1.1  什么是索引 132

8.1.2  索引的类型 133

8.1.3  索引的属性 136

8.2  索引的创建与删除 136

8.3  优化MongoDB复合索引 137

8.3.1  构建MongoDB使用场景 138

8.3.2  范围查询 138

8.3.3  范围查询结合等式查询 139

8.3.4  MongoDB如何选择一个索引 141

8.3.5  等式查询,范围查询和排序 142

8.4  通过explain结果来分析性能 144

8.5  慢查询优化 148

8.5.1  慢查询流程 148

8.5.2  慢查询的使用 148

8.6  填充因子 150

8.7  数据库设计优化 151

8.8  就业面试技巧与解析 153

8.8.1  面试技巧与解析(一) 153

8.8.2  面试技巧与解析(二) 154

第9章  MongoDB的性能——复制 155

◎ 本章教学微视频

9.1  复制概览 155

9.1.1  复制的基本架构 156

9.1.2  复制集简介 156

9.1.3  复制的节点介绍 157

9.1.4  复制的限制 158

9.1.5  配置副本集 159

9.1.6  验证MongoDB复制集 164

9.1.7  副本集的“心跳”检测和故障转移 165

9.2  操作日志 166

9.2.1  副本集数据同步的过程 166

9.2.2  操作日志的增长速度与大小 166

9.2.3  操作日志的解析 167

9.2.4  操作日志的应用 168

9.3  就业面试技巧与解析 170

9.3.1  面试技巧与解析(一) 171

9.3.2  面试技巧与解析(二) 171

第10章  大数据的应用——分片 172

◎ 本章教学微视频

10.1  分片的简介 172

10.1.1  分片的目的 173

10.1.2  分片设计思想 173

10.1.3  MongoDB的自动分片 173

10.2  分片键 174

10.2.1  片键种类 175

10.2.2  分片键的选择 176

10.3  分片的工作原理 178

10.3.1  分片组件 178

10.3.2  核心分片操作 179

10.4  MongoDB的分片集群 180

10.4.1  理解分片集群的组件 181

10.4.2  集群中的数据分布 181

10.4.3  chunk分裂及迁移 181

10.4.4  元数据 182

10.4.5  MongoDB的分片集群的搭建 182

10.5  就业面试技巧与解析 188

10.5.1  面试技巧与解析(一) 188

10.5.2  面试技巧与解析(二) 188

第11章  MongoDB的应用——MongoDB sharding 189

◎ 本章教学微视频

11.1  MongoDB sharding介绍 189

11.1.1  为什么需要分片集群 189

11.1.2  数据分布策略 190

11.1.3  如何确定分片、mongos

 数量 190

11.1.4  如何选择分片键 191

11.1.5  特大块及块大小 192

11.1.6  负载均衡 192

11.2  MongoDB sharding 块迁移 193

11.2.1  为什么要进行块迁移 193

11.2.2  balancer如何工作 194

11.2.3  moveChunk命令 195

11.2.4  balancer运维管理 197

11.3  就业面试技巧与解析 199

11.3.1  面试技巧与解析(一) 199

11.3.2  面试技巧与解析(二) 199

第4篇  高级操作篇

第12章  用Java操作MongoDB 202

◎ 本章教学微视频

12.1  Java连接MongoDB操作 202

12.2  认识Spring Data MongoDB 208

12.3  添加和删除操作 209

12.3.1  添加 209

12.3.2  删除文档、删除集合 215

12.4  MongoDB的基本文档修改 216

12.4.1  mongoTemplate.Upsert操作 217

12.4.2  mongoTemplate.updateFirst操作 218

12.4.3  mongoTemplate.updateMulti操作 219

12.4.4  BasicUpdate操作 221

12.5  查询操作 222

12.5.1  findOne查询 225

12.5.2  find查询 226

12.5.3  find查询时指定返回需要的字段 227

12.6  分页 228

12.6.1  基本分页 228

12.6.2  进阶的查询分页 230

12.6.3  其他的查询方法 232

12.7  就业面试技巧与解析 232

12.7.1  面试技巧与解析(一) 232

12.7.2  面试技巧与解析(二) 232

第13章  用Node.js操作MongoDB 233

◎ 本章教学微视频

13.1  Node.js对于MongoDB的基本操作 233

13.1.1  连接数据库 233

13.1.2  插入数据 236

13.1.3  删除数据 236

13.1.4  修改数据 237

13.1.5  查找数据 237

13.1.6  获取该集合当中文档对象的总数 238

13.2  Node.js操作MongoDB的常用函数的封装 238

13.3  MongoDB与Mongoose 241

13.3.1  Mongoose简介 242

13.3.2  使用Mongoose管理数据库 242

13.3.3  对数据库进行映射 243

13.3.4  对集合进行操作(Model) 244

13.4  就业面试技巧与解析 248

13.4.1  面试技巧与解析(一) 248

13.4.2  面试技巧与解析(二) 248

第14章  用Python操作MongoDB 249

◎ 本章教学微视频

14.1  Python使用PyMongo的简单CURD操作 249

14.2  使用PyMongo插入数据 253

14.3  使用PyMongo查询数据 254

14.3.1  PyMongo的find_one()和find() 254

14.3.2  PyMongo条件查询操作 256

14.3.3  在一个集合中查询所有文档 262

14.3.4  指定相等条件 262

14.4  使用PyMongo更新数据 263

14.4.1  更新特定的字段 263

14.4.2  替换一个文档 265

14.5  使用PyMongo删除数据 265

14.6  使用PyMongo进行数据聚合 266

14.6.1  根据一个字段分组文件并计算总数 266

14.6.2  筛选并分组文档 267

14.7  PyMongo上的索引 267

14.8  就业面试技巧与解析 268

14.8.1  面试技巧与解析(一) 268

14.8.2  面试技巧与解析(二) 268

第5篇  项目实践篇

第15章  项目实践入门阶段——商品管理系统 270

◎ 本章教学微视频

15.1  开发背景 270

15.2  系统功能设计 270

15.2.1  系统功能结构 270

15.2.2  系统程序结构 272

15.3  数据库设计 274

15.4  系统功能模块设计与实现 275

15.4.1  JavaBean的创建 275

15.4.2  工具类 276

15.4.3  控制台输入 276

15.4.4  查询所有商品信息模块 277

15.4.5  通过编号查询商品详情模块 279

15.4.6  添加商品模块 280

15.4.7  通过编号删除模块 283

15.5  本章总结 285

第16章  项目实践提高阶段——舞蹈培训管理系统 286

◎ 本章教学微视频

16.1  开发背景 286

16.2  系统功能设计 286

16.2.1  系统业务服务实现 286

16.2.2  系统功能基本操作实现 287

16.3  系统开发必备 287

16.4  数据库设计 288

16.4.1  创建测试数据 288

16.4.2  通过Get请求读取MongoDB数据 288

16.4.3  通过Post请求将数据存入MongoDB 290

16.5  系统需求概述 291

16.5.1  用户前台功能描述 291

16.5.2  管理员后台功能描述 291

16.5.3  系统功能实现 292

16.6  系统功能模块设计与实现 301

16.6.1  Document 模型设计 301

16.6.2  MongoDB基础 302

16.6.3  Mongo shell基本使用 302

16.6.4  MongoDB基本文档操作 303

16.6.5  MongoDB文档内嵌数组操作 304

16.6.6  MongoDB文档内嵌文档操作 306

16.6.7  Mongoskin MVC Helper 309

16.6.8  MongoDB访问权限控制 310

16.7  本章总结 311

第17章  项目实践高级阶段——网站帖子爬取系统 312

◎ 本章教学微视频

17.1  Scrapy爬取数据存储到数据库 312

17.1.1  Scrapy爬取数据 313

17.1.2  将数据存入MongoDB 316

17.2  基于Django框架对MongoDB实现增、删、改、查 317

17.2.1  准备工作 317

17.2.2  连接MongoDB数据库 319

17.2.3  项目配置 320

17.2.4  路由设置 322

17.2.5  业务逻辑处理 323

17.2.6  前端页面书写 324

17.3  本章总结 328