När ditt användningsfall kräver transaktioner som sträcker sig över flera dokument, passar MongoDB vanligtvis dåligt för det, eftersom det inte stöder atomära operationer när mer än ett dokument påverkas.
En möjlig lösning är two-phase-commit modell.
Det betyder i princip att du först lägger till en beskrivning av vad du vill göra i varje dokument som ett extra fält till det. Sedan utför du en atomoperation på varje dokument som tillämpar den åtgärden och tar bort beskrivningen. Vart och ett av dessa steg bekräftas genom att fråga dokumentet efteråt och varje steg i transaktionen dokumenteras av ett tredje dokument i en ytterligare samling av pågående transaktioner. Detta gör att du kan kontrollera efter väntande transaktioner och återställa dem.
Denna metod är svår att implementera och har betydande omkostnader. Innan du implementerar detta bör du verkligen överväga om det verkligen finns en bra anledning att inte använda ett databassystem med inbyggt transaktionsstöd.