Как добиться отката в транзакциях в монго?

Я использую мангуст над mongodb.

В запросе и ответе от nodejs express server обычно требуется отсутствие запросов к mongodb через mongoose.

Во многих случаях это может случиться, если сначала несколько запросов выполняются успешно и все остальное не удалось выполнить в транзакции.

Теперь мне нужно откат моего состояния db до самого начального состояния db.

Итак, как можно эффективно откатываться в mongodb? Пожалуйста, предоставьте несколько подходящих ссылок.

Ответ 1

Я согласен с Гектором. Если вам нужно несколько транзакций с документами, то Mongo может оказаться не очень подходящим для вас. Можете ли вы встроить свою структуру данных в один документ? Затем вы можете получить откат, который вы ищете.

Другой вариант - посмотреть на Mongo clone TokuMX, который предоставляет транзакции по нескольким документам.

Ответ 3

Нет поддержки для традиционных транзакций базы данных ACID в MongoDB, независимо от того, что вы положили поверх нее. Это не проблема с Mongoose или Express.js, это характерно для MongoDB.

MongoDB поддерживает атомарные операции, что означает, что сохранение в коллекции гарантировано полностью или полностью завершится неудачей, другими словами, вы не получите частичных обновлений одного документа в коллекции. Но нет поддержки для нескольких обновлений в одной транзакции.

http://docs.mongodb.org/manual/faq/fundamentals/#does-mongodb-support-transactions