MongoDB 事务与 ACID 保障
掌握 MongoDB 多文档事务的使用,确保数据一致性。 · 难度:入门 · +15XP
事务基础
MongoDB 4.0+ 支持副本集上的多文档 ACID 事务。事务确保一组操作要么全部成功,要么全部回滚。
开始事务
const session = client.startSession();
session.startTransaction();
try {
await collection1.insertOne({ name: "Alice" }, { session });
await collection2.updateOne({ _id: 1 }, { $inc: { balance: -100 } }, { session });
await session.commitTransaction();
} catch (error) {
await session.abortTransaction();
} finally {
session.endSession();
}| 方法 | 作用 |
|---|---|
| startSession() | 创建客户端会话 |
| startTransaction() | 开始事务 |
| commitTransaction() | 提交事务 |
| abortTransaction() | 回滚事务 |
注意事项
- 事务超时默认为 60 秒
- 每个事务最多操作 1000 个文档
- 需要副本集或分片集群
练习提示
模拟银行转账:从用户A账户扣款100元,给用户B加100元。使用事务确保两步同时成功。