Definición
commitTransactionGuarda los cambios realizados por las operaciones en el transacción multidocumento y finaliza la transacción.
Tip
En
mongosh, este comando también se puede ejecutar a través de los métodos auxiliaresSession.commitTransaction()Session.withTransaction()y.Los métodos asistente son convenientes para usuarios de
mongosh, pero es posible que no proporcionen el mismo nivel de información que los comandos de base de datos. En los casos en que no se necesite la conveniencia o se requieran campos de retorno adicionales, utiliza el comando de base de datos.Para ejecutar, el comando debe ejecutarse contra
commitTransactionlaadminbase de datos y ejecutarse dentro deSession()un.
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
Este comando es compatible con todos los clústeres de MongoDB Atlas. Para obtener información sobre el soporte de Atlas para todos los comandos, consulte Comandos no compatibles.
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 se compromete utilizando la "w: 1" preocupación de escritura, su transacción puede revertirse si hay una conmutación por error.
Atomicidad
Cuando se confirma una transacción, todos los cambios realizados en los datos se guardan y son visibles fuera de ella. Es decir, una transacción no confirmará algunos de sus cambios mientras revierte 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.