Docs Menu
Docs Home
/
MongoDBマニュアル
/ / /

commitTransaction

項目一覧

  • 定義
  • 互換性
  • 構文
  • 動作
commitTransaction

操作によって行われた変更をマルチドキュメントトランザクションに保存し、トランザクションを終了します。

Tip

mongoshでは、このコマンドはSession.commitTransaction()およびSession.withTransaction()ヘルパー メソッドを通じて実行することもできます。

ヘルパー メソッドはmongoshユーザーには便利ですが、データベースコマンドと同じレベルの情報は返されない可能性があります。 便宜上必要ない場合、または追加の戻りフィールドが必要な場合は、 データベースコマンドを使用します。

commitTransactionを実行するには、コマンドをadminデータベースに対して実行し、 Session()内で実行する必要があります。

このコマンドは、次の環境でホストされている配置で使用できます。

  • MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです

注意

このコマンドは、すべての MongoDB Atlas クラスターでサポートされています。すべてのコマンドに対する Atlas のサポートについては、 「サポートされていないコマンド」を参照してください。

  • MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン

  • MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン

このコマンドの構文は、次のとおりです。

{
commitTransaction: 1,
txnNumber: <long>,
writeConcern: <document>,
autocommit: false,
comment: <any>
}

トランザクションをコミットする際、セッションはトランザクションの開始時に指定された書込み保証( write concern )を使用します。 詳しくはSession.startTransaction()を参照してください。

"w: 1"書込み保証 (write concern) を使用してコミットする場合、フェイルオーバーが発生した場合にトランザクションはロールバックされる可能性があります。

トランザクションがコミットされると、トランザクションで行われたデータ変更はトランザクションの外部に保存、表示されます。つまり、トランザクションが他の変更をロールバックしながら、一部の変更をコミットすることはありません。

トランザクションがコミットされるまで、トランザクションで行われたデータ変更はトランザクションの外部には表示されません。

ただし、トランザクションが複数のシャードに書き込む場合、すべての外部読み取り操作が、コミットされたトランザクションの結果がシャード全体で表示されるまで待機する必要はありません。たとえば、トランザクションがコミットされ、書込み 1 がシャード A で表示されているものの、書込み 2 がシャード B にまだ表示されていない場合、読み取り保証(read concern) "local" での外部読み取りは、書き込み 2 を見ることなく書き込み 1 の結果を読み取ることができます。

戻る

abortTransaction