MongoDB中如何使用事务?

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();
}