事务基础
事务用于保证多次写操作要么都成功,要么都失败。
例如转账:
- A 扣钱。
- B 加钱。
这两步必须作为一个整体。
一、MongoDB 是否支持事务
MongoDB 支持多文档事务,但事务不是 MongoDB 的第一设计目标。
很多 MongoDB 业务会通过合理文档建模,把需要同时更新的数据放在一个文档里,减少事务需求。
多文档事务通常用于:
- 订单和库存同时更新。
- 账户余额变更。
- 多集合写入必须保持一致。
二、事务适用环境
多文档事务通常用于副本集或分片集群环境。
如果你只是用最简单的单节点本地 Docker 学习环境,不建议一开始就纠结事务配置。
先理解事务适合解决什么问题,再在真实项目环境里配置副本集和事务。
三、单文档写入是原子的
MongoDB 对单个文档的写入是原子的。
例如:
这个更新不会只改一半。
所以如果一个业务的数据天然可以放在一个文档里,就不一定需要事务。
四、不要滥用事务
事务会带来额外成本。
如果一个操作可以通过文档建模解决,就不要为了“像 MySQL 一样”强行使用事务。
例如文章浏览量:
这种单文档原子更新不需要事务。
五、后端项目里的判断方式
可以这样判断:
初学阶段先把 CRUD、索引、建模学扎实,再深入事务。

