参考 > 参考 > mongo Shell方法 > 连接方式 > Session > Session.commitTransaction()
提交事务时,将保存在事务中进行的所有数据更改,并在事务外部可见。也就是说,一个事务在回滚其他事务时将不会提交其某些更改。
在提交事务之前,在事务外部看不到在事务中进行的数据更改。
但是,当一个事务写入多个分片时,并非所有外部读取操作都需要等待已提交事务的结果在所有分片上可见。例如,如果提交了一个事务,并且在分片A上可以看到写1,但是在分片B上仍然看不到写2,则外部读处于读关注状态
"local"
可以读取写1的结果而看不到写2。
如果提交操作遇到错误,则MongoDB驱动程序将重试一次提交操作,无论是否
retryWrites
将其设置为false
。有关更多信息,请参见
事务错误处理。
考虑一个场景,当对hr
数据库中的员工记录进行更改时,您要确保数据库中的events
集合reporting
与hr
更改保持同步。也就是说,您要确保这些写入操作是作为单个事务完成的,以便两个操作都成功或失败。
数据库中的employees
集合hr
包含以下文档:
数据库中的events
集合reporting
包含以下文档:
以下示例打开一个事务,将员工的状态更新Inactive
为employees
状态,并将相应的文档插入到events
集合中,并将这两项操作作为单个事务提交。