commitTransaction
Nesta página
Definição
commitTransaction
Salva as alterações feitas pelas operações natransação multidocumento e termina a transação.
Dica
Em
mongosh
, esse comando também pode ser executado por meio dos métodos auxiliaresSession.commitTransaction()
eSession.withTransaction()
.Os métodos auxiliares são práticos para os usuários
mongosh
, mas podem não retornar o mesmo nível de informações que os comandos do banco de dados. Nos casos em que a praticidade não for necessária ou os campos de retorno adicionais forem necessários, use o comando de banco de dados.Para executar
commitTransaction
, o comando deve ser executado noadmin
banco de dados e executado dentro de umSession()
.
Compatibilidade
Esse comando está disponível em implantações hospedadas nos seguintes ambientes:
MongoDB Atlas: o serviço totalmente gerenciado para implantações do MongoDB na nuvem
Observação
Este comando é aceito em todos os clusters do MongoDB Atlas. Para obter informações sobre o suporte do Atlas a todos os comandos, consulte Comandos não suportados.
MongoDB Enterprise: a versão autogerenciada e baseada em assinatura do MongoDB
MongoDB Community: uma versão com código disponível, de uso gratuito e autogerenciada do MongoDB
Sintaxe
O comando tem a seguinte sintaxe:
{ commitTransaction: 1, txnNumber: <long>, writeConcern: <document>, autocommit: false, comment: <any> }
Comportamento
Escreva preocupação
Ao confirmar a transação, a sessão utiliza a write concern especificada no início da transação. Consulte Session.startTransaction()
.
Se você confirmar usando a write concern "w: 1"
, sua transação poderá ser revertida se houver um failover.
Atomicidade
Quando uma transação é confirmada, todas as alterações de dados feitas na transação são salvas e visíveis fora da transação. Ou seja, uma transação não confirmará algumas de suas alterações enquanto reverte outras.
Até que uma transação seja confirmada, as alterações de dados feitas na transação não serão visíveis fora da transação.
No entanto, quando uma transação é gravada em vários fragmentos, nem todas as operações de leitura externas precisam esperar que o resultado da transação confirmada fique visível nos fragmentos. Por exemplo, se uma transação estiver comprometida e escrever 1 estiver visível no fragmento A, mas escrever 2 ainda não estiver visível no fragmento B, uma leitura externa em questão de leitura "local"
poderá ler os resultados da escrita 1 sem ver a escrita 2.