文档菜单
文档首页
/
MongoDB 手册
/ / /

commitTransaction

本页内容

  • 定义
  • 兼容性
  • 语法
  • 行为
commitTransaction

保存在多文档事务中进行的操作所做的更改并结束事务。

提示

mongosh中,此命令也可以通过Session.commitTransaction()Session.withTransaction()辅助方法运行.

辅助方法对mongosh用户来说很方便,但它们可能不会返回与数据库命令相同级别的信息。在不需要方便或需要额外的返回字段的情况下,请使用数据库命令。

要运行commitTransaction,必须在admin数据库上运行此命令,并在Session()中运行。

此命令可在以下环境中部署的以下环境中使用

  • MongoDB Atlas:MongoDB在云中的全面管理服务

注意

此命令支持所有MongoDB Atlas集群。有关Atlas对所有命令的支持信息,请参阅不受支持的命令。

该命令具有以下语法

db.adminCommand(
{
commitTransaction: 1,
txnNumber: <long>,
writeConcern: <document>,
autocommit: false,
comment: <any>
}
)

在提交事务时,会话使用在事务开始时指定的写入关注。请参阅Session.startTransaction()

如果您使用"w: 1"写入关注提交,则事务可能会在故障转移时回滚。

当事务提交时,事务中做出的所有数据更改都将被保存并在事务外部可见。也就是说,事务不会提交其中的一些更改同时回滚其他更改。

然而,在事务提交之前,事务中做出的数据更改在事务外部是不可见的。

但是,当事务写入多个分片时,并非所有外部读取操作都需要等待已提交的事务结果在分片之间可见。例如,如果事务已提交且写入1在分片A上可见,但写入2在分片B上尚未可见,则在读取关注"local"的外部读取可以读取写入1的结果而看不到写入2。

返回

abortTransaction