CRUD、查询/写入语义与聚合
本主题覆盖数据的读写:从 CRUD 操作与查询语义,到决定一致性与持久性的 read/write concern、read preference 与可重试写,再到聚合管道的数据流与优化。
本章条目
| 编号 | 条目 | 类型 | 难度 | 一句话摘要 |
|---|---|---|---|---|
| QUERY-01 | CRUD 与查询语义 | 指南 | 入门 | insert/find/update/delete、投影、批量、upsert |
| QUERY-02 | read/write concern 与 read preference | 概念 | 高级 | 三个独立旋钮:读位置、读可见性、写持久性 |
| QUERY-03 | 聚合管道 | 指南 | 高级 | 阶段顺序、$lookup/$unwind 代价、allowDiskUse |
核心原则
不要混淆三个正交概念
read preference(从哪个节点读)、read concern(读到什么可见性/隔离级别的数据)、write concern(写入被多少节点确认才算成功)是三个相互独立的旋钮。混为一谈是分布式一致性问题的常见根源。
- 单文档写入天然原子:无需事务即可保证单个文档更新的原子性。
- 聚合尽早过滤:
$match/$project尽量前置,减少后续阶段的数据量并利用索引。 - 写入要考虑持久性与延迟的权衡:
w: "majority"更安全但更慢。
相关主题
- 查询依赖索引:见 索引设计
- 跨文档一致性:见 事务
- 读写关注的对照表:见 read/write concern 决策表
