如果你希望使用支持现代应用程序开发的系统来管理数据,那么MongoDB是不错的选择。作为面向文档的NoSQL数据库,MongoDB功能多、灵活且易于扩展,在DB-Engines数据库流行度排行榜上名列前茅。
本书是由MongoDB团队成员撰写的入门指南,涵盖从开发到部署的各个方面,内容适合MongoDB 4.2及以上版本。无论你是NoSQL新手还是有经验的MongoDB用户,都可以在查询、索引、聚合、事务、副本集、分片、监控和安全等方面收获新的知识。
◎ 编辑推荐
MongoDB团队成员撰写,带你入门主流NoSQL数据库
第1版、第2版累计发行5万册,第3版对TTL和聚合管道等新特性进行了讲解,还增加了配置MongoDB的章节
内容适合MongoDB 4.2及以上版本
◇ 使用MongoDB执行写操作、查找文档并进行复杂的查询
◇ 对集合进行索引,对数据进行聚合,在应用程序中使用事务
◇ 配置本地副本集,并了解复制机制如何与应用程序交互
◇ 创建集群的各个组件,并为不同类型的应用程序选择片键
◇ 探索应用程序管理的各个方面,并配置身份验证和授权
◇ 使用工具进行监控、备份和恢复,并在部署MongoDB时对系统进行设置
◎ 内容简介
与传统的关系数据库不同,MongoDB是一种面向文档的数据库。本书这一版共分为6个部分,涵盖开发、管理以及部署等各个方面。这一版对TTL和聚合管道等新特性进行了讲解,还增加了配置MongoDB的章节,涵盖面向文档的存储方式及利用MongoDB的无模式数据模型处理文档、集合和多个数据库,以及监控、安全性和身份验证、备份和修复、水平扩展MongoDB数据库等多方面的内容。
......(更多)
◎ 著者简介
☆ 香农•布拉德肖(Shannon Bradshaw),MongoDB公司培训部门副总裁,负责管理MongoDB专业认证项目提供的培训产品。
☆ 约恩•布拉齐尔(Eoin Brazil),MongoDB公司高级课程工程师,致力于开发与MongoDB相关的在线培训产品。
☆ 克里斯蒂娜•霍多罗夫(Kristina Chodorow),软件工程师,曾深度参与MongoDB的内核开发工作。她领导了MongoDB副本集功能的开发并编写了PHP和Perl的驱动程序。
◎ 译者简介
☆ 牟天垒,架构师,MongoDB官方认证双证持有者,MongoDB官方中文社区核心成员,MongoDB生态工具Tapdata创始工程师,致力于实时数据服务理念的实现。
☆ 王明辉,本科就读于同济大学,从事全栈开发多年,参与过数个创业项目,也对开源社区有所贡献,现就职于微软(亚洲)互联网工程院。
......(更多)
前言 xvii
第一部分 MongoDB入门
第1章 MongoDB简介 3
1.1 易于使用 3
1.2 易于扩展 3
1.3 功能丰富 4
1.4 性能卓越 5
1.5 设计理念 5
第2章 入门指南 6
2.1 文档 6
2.2 集合 7
2.3 数据库 8
2.4 启动MongoDB 9
2.5 MongoDB shell介绍 10
2.6 数据类型 14
2.7 使用MongoDB shell 18
第3章 创建、更新和删除文档 25
3.1 插入文档 25
3.2 删除文档 28
3.3 更新文档 30
第4章 查询 45
4.1 find简介 45
4.2 查询条件 47
4.3 特定类型的查询 48
4.4 $where查询 55
4.5 游标 56
第二部分 设计应用程序
第 5 章 索引 63
5.1 索引简介 63
5.2 explain输出 99
5.3 何时不使用索引 106
5.4 索引类型 107
5.5 索引管理 110
第6章 特殊的索引和集合类型 112
6.1 地理空间索引 112
6.2 全文搜索索引 123
6.3 固定集合 127
6.4 TTL索引 130
6.5 使用GridFS存储文件 130
第7章 聚合框架 134
7.1 管道、阶段和可调参数 134
7.2 阶段入门:常见操作 136
7.3 表达式 140
7.4 $project 140
7.5 $unwind 145
7.6 数组表达式 151
7.7 累加器 155
7.8 分组简介 57
7.9 将聚合管道结果写入集合中 166
第8章 事务 167
8.1 事务简介 167
8.2 如何使用事务 168
8.3 对应用程序的事务限制进行调优 171
第9章 应用程序设计 173
9.1 模式设计注意事项 173
9.2 范式化与反范式化 176
9.3 优化数据操作 182
9.4 数据库和集合的设计 183
9.5 一致性管理 183
9.6 模式迁移 184
9.7 模式管理 185
9.8 不适合使用MongoDB的场景 185
第三部分 复制
第10章 创建副本集 189
10.1 复制简介 189
10.2 建立副本集(一) 190
10.3 网络注意事项 191
10.4 安全注意事项 191
10.5 建立副本集(二) 191
10.6 观察副本集 194
10.7 更改副本集配置 199
10.8 如何设计副本集 201
10.9 成员配置选项 203
第11章 副本集的组成 207
11.1 同步 207
11.2 心跳 210
11.3 选举 212
11.4 回滚 212
第12章 从应用程序连接副本集 216
12.1 客户端到副本集的连接行为 216
12.2 在写入时等待复制 218
12.3 自定义复制保证规则 219
12.4 将读请求发送到从节点 221
第13章 管理 224
13.1 以单机模式启动成员 224
13.2 副本集配置 225
13.3 控制成员状态 227
13.4 监控复制 228
第四部分 分片
第 14 章 分片简介 239
14.1 什么是分片 239
14.2 理解集群组件 240
14.3 在单机集群上进行分片 241
第15章 配置分片 250
15.1 何时分片 250
15.2 启动服务器 251
15.3 MongoDB如何追踪集群数据 256
15.4 均衡器 261
15.5 排序规则 261
15.6 变更流 261
第16章 选择片键 263
16.1 评估使用情况 263
16.2 描绘分发情况 264
16.3 片键策略 268
16.4 片键规则和指导方针 273
16.5 控制数据分发 273
第17章 分片管理 276
17.1 查看当前状态 276
17.2 跟踪网络连接 283
17.3 服务器管理 290
17.4 数据均衡 294
第五部分 应用程序管理
第 18 章 了解应用程序的动态 303
18.1 查看当前操作 303
18.2 使用系统分析器 307
18.3 计算大小 310
18.4 使用mongotop和mongostat 316
第19章 MongoDB安全介绍 318
19.1 MongoDB的身份验证和授权 318
19.2 MongoDB的认证和传输层加密教程 323
第20章 持久性 332
20.1 使用日志机制的成员级别持久性 332
20.2 使用写关注的集群级别持久性 333
20.3 使用读关注的集群级别持久性 335
20.4 使用写关注的事务持久性 335
20.5 MongoDB不能保证什么 336
20.6 检查数据损坏 336
第六部分 服务器端管理
第21章 在生产环境中设置MongoDB 341
21.1 从命令行启动 341
21.2 停止MongoDB 345
21.3 安全性 346
21.4 日志 348
第22章 监控MongoDB 349
22.1 监控内存使用情况 349
22.2 计算工作集的大小 352
22.3 跟踪性能情况 354
22.4 跟踪剩余空间 355
22.5 监控复制情况 356
第23章 备份 359
23.1 备份方法 359
23.2 对服务器进行备份 360
23.3 副本集的特殊注意事项 366
23.4 分片集群的特殊注意事项 366
第24章 部署MongoDB 368
24.1 系统设计 368
24.2 虚拟化 371
24.3 配置系统设置 373
24.4 网络配置 378
24.5 系统管理 379
附录A 安装MongoDB 380
附录B 深入MongoDB 384
......(更多)
"$siz"e并不能与其他查询子句组合(比如"$gt"),但是这种查询可以通过在文档中添加一个"size"键的方式来实现。这样每一次向指定数组中添加元素的时候,同时增加"size"的值。(泥马。。这是在坑爹吗)
游标可能会返还那些已经被挪动的文档,应对这个问题的方法就是对查询进行快照
......(更多)