Когато приложението или базата данни изведнъж се срине между прилагането на транзакцията към A и прилагането на транзакцията към B, все още ще има транзакция с state:"pending"
в глобалната колекция от транзакции. Вашият скрипт за възстановяване, който изпълнявате след срив, трябва да забележи това, да провери двата акаунта и да види, че има чакаща транзакция в единия, но не и в другия акаунт. Сега той знае всичко, което трябва да знае, за да отмени транзакцията или да се опита да я завърши.
Да, писането на скрипт за възстановяване, който е толкова умен, не е лесно. Но транзакциите в система от бази данни, която не е проектирана за тях, винаги са трудни. Понякога можете да заобиколите изискването за транзакции в MongoDB, като проектирате вашите документи по начин, че полетата, които трябва да се актуализират заедно, винаги са в един и същи документ, но не винаги има разумен начин да направите това. Когато вашият случай на употреба абсолютно се нуждае от транзакции, защитете разума си и използвайте релационна база данни.