Definición
commitTransactionGuarda los cambios realizados por las operaciones en la transacción multi-documento y finaliza la transacción.
Tip
In
mongosh, this command can also be run through theSession.commitTransaction()andSession.withTransaction()helper methods.Helper methods are convenient for
mongoshusers, but they may not return the same level of information as database commands. In cases where the convenience is not needed or the additional return fields are required, use the database command.To run the
commitTransaction, the command must be run against theadmindatabase and run within aSession().
Compatibilidad
Este comando está disponible en implementaciones alojadas en los siguientes entornos:
- MongoDB Atlas: El servicio totalmente gestionado para implementaciones de MongoDB en la nube
Nota
This command is supported in all MongoDB Atlas clusters. For information on Atlas support for all commands, see Unsupported Commands.
MongoDB Enterprise: La versión basada en suscripción y autogestionada de MongoDB
MongoDB Community: La versión de MongoDB con código fuente disponible, de uso gratuito y autogestionada.
Sintaxis
El comando tiene la siguiente sintaxis:
db.adminCommand( { commitTransaction: 1, txnNumber: <long>, writeConcern: <document>, autocommit: false, comment: <any> } )
Comportamiento
Nivel de confirmación de escritura
Al confirmar la transacción, la sesión utiliza el nivel de confirmación de escritura (write concern) especificado al inicio de la transacción. Ver Session.startTransaction().
Si confirmas usando la "w: 1" nivel de confirmación de escritura (write concern), tu transacción puede ser revertida en caso de una conmutación por error...
Atomicidad
Cuando se confirma una transacción, todos los cambios de datos realizados en la transacción se guardan y son visibles fuera de la transacción. Es decir, una transacción no confirmará algunos de sus cambios mientras deshace otros.
Hasta que se produzca la confirmación de una transacción, los cambios de datos realizados en la transacción no son visibles fuera de la transacción.
Sin embargo, cuando una transacción se guarda en múltiples fragmentos, no todas las operaciones de lectura externas necesitan esperar a que el resultado de la transacción confirmada sea visible en todos los fragmentos. Por ejemplo, si se confirma una transacción y la escritura 1 es visible en el fragmento A, pero la escritura 2 aún no es visible en el fragmento B, una lectura externa con el nivel de consistencia de lectura "local" puede leer los resultados de la escritura 1 sin ver la escritura 2.