Quando il tuo caso d'uso richiede transazioni che si estendono su più documenti, MongoDB di solito non è adatto, perché non supporta operazioni atomiche quando è interessato più di un documento.
Una possibile soluzione è il two-phase-commit modello.
Fondamentalmente significa che devi prima aggiungere una descrizione di cosa vuoi fare a ciascun documento come campo aggiuntivo ad esso. Quindi esegui un'operazione atomica su ogni documento che applica quell'azione e rimuove la descrizione. Ciascuno di questi passaggi è confermato interrogando il documento in seguito e ogni passaggio della transazione è documentato da un terzo documento in una raccolta aggiuntiva di transazioni in sospeso. Ciò ti consente di verificare la presenza di transazioni in sospeso e ripristinarle.
Questo metodo è difficile da implementare e ha un sovraccarico considerevole. Prima di implementarlo, dovresti davvero considerare se c'è davvero una buona ragione per non utilizzare un sistema di database con supporto nativo per le transazioni.