Olá, Danilo! Tudo bem?
No MongoDB, a atomicidade é garantida por padrão apenas para operações que afetam um único documento. Então, quando fazemos uma gravação em um documento — seja uma atualização, inserção ou exclusão —, essa operação será atômica. Mesmo que esse documento tenha subdocumentos ou arrays incorporados, a mudança será aplicada de uma vez só, sem interferências.
Agora, quando falamos de operações que envolvem vários documentos, como updateMany()
, a atomicidade se aplica individualmente a cada documento. Como isso, cada documento será modificado ou não, mas não há uma garantia de que todos os documentos na operação sejam atualizados como um todo caso algo dê errado no meio do processo. A operação como um todo não é atômica nesse caso.
Para garantir que as alterações sejam atômicas em vários documentos ou coleções ao mesmo tempo, o MongoDB oferece o recurso de transações distribuídas a partir da versão 4.0. Com essas transações, você pode executar um conjunto de operações de forma que todas sejam aplicadas com sucesso ou nenhuma delas será, assegurando a atomicidade em um nível multi-documento. Porém, vale lembrar que as transações distribuídas têm um custo maior de desempenho, então é recomendado usá-las apenas quando realmente necessário.
Recomendo a leitura das documentações para aprofundar sobre esse conteúdo:
Espero ter ajudado.
Qualquer dúvida, não hesite em compartilhar no fórum.
Abraços!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado