Wanneer uw use-case transacties vereist die meerdere documenten omvatten, is MongoDB er meestal niet geschikt voor, omdat het geen atomaire bewerkingen ondersteunt wanneer meer dan één document wordt beïnvloed.
Een mogelijke oplossing is de two-phase-commit model.
Het betekent in feite dat u eerst een beschrijving toevoegt wat u aan elk document wilt doen als een extra veld. Vervolgens voert u een atomaire bewerking uit op elk document die die actie toepast en de beschrijving verwijdert. Elk van deze stappen wordt bevestigd door het document achteraf op te vragen en elke stap van de transactie wordt gedocumenteerd door een 3e document in een aanvullende verzameling van lopende transacties. Hiermee kunt u controleren op openstaande transacties en deze terugdraaien.
Deze methode is moeilijk te implementeren en heeft een aanzienlijke overhead. Voordat je dit implementeert, moet je echt overwegen of er echt een goede reden is om geen databasesysteem met native transactieondersteuning te gebruiken.