MongoDB 4.0版本引入了事务(Transaction)支持。事务可以确保操作的原子性、一致性和隔离性。
在MongoDB中使用事务主要有以下步骤:
1、开启事务:使用startTransaction()开启一个事务。
MongoTransactionSession session = mongoClient.startSession();
session.startTransaction();
2、在事务中执行操作:在事务中执行需要的新增、修改或删除操作。
Document doc = new Document("x", 1);
session.getDatabase("db").getCollection("coll").insertOne(doc);
3、 提交/回滚事务:调用commitTransaction()提交事务,或者abortTransaction()回滚事务。
session.commitTransaction(); // 提交事务
session.abortTransaction(); // 回滚事务
4、 结束会话:调用close()结束会话。
session.close();
在事务中,如果遇到错误或异常,事务会自动回滚。我们也可以通过catch块手动回滚事务。
事务的隔离级别默认为snapshot,它可以阅读事务开始前的数据,并阅读或修改之后提交的新数据。我们也可以设置为readCommited级别。
相关代码:
MongoTransactionSession session = mongoClient.startSession();
session.startTransaction();
try {
// 执行操作
session.commitTransaction();
} catch (Exception e) {
session.abortTransaction();
} finally {
session.close();
}