如何在mongo中实现事务回滚?

时间:2014-01-31 18:18:19

标签: node.js mongodb express transactions mongoose

我在mongodb上使用mongoose。

在来自nodejs express服务器的请求和响应中,通常需要通过mongoose对mongodb进行查询。

在许多情况下,如果首先成功执行一些查询并且在交易中休息全部失败,则可能会发生这种情况。

现在我需要将db状态回滚到db的初始状态。

那么我怎样才能在mongodb中高效回滚? 请提供一些合适的参考资料。

3 个答案:

答案 0 :(得分:4)

通过mongo教程

这是我发现进行两阶段提交的链接(可能无法保证):

http://docs.mongodb.org/manual/tutorial/perform-two-phase-commits/

答案 1 :(得分:4)

我同意赫克托耳。如果您需要多个文档事务,那么Mongo可能不适合您。您可以将数据结构嵌入到单个文档中吗?然后你就可以得到你正在寻找的回滚。

另一个选择是查看Mongo clone TokuMX,它提供跨多个文档的事务。

答案 2 :(得分:1)

MongoDB中不支持传统的ACID数据库事务,无论你放在它上面的是什么。这不是Mongoose或Express.js的问题,它是MongoDB的一个特征。

MongoDB支持原子操作,这意味着保证集合保存完全成功或失败,换句话说,您不会对集合中的单个文档进行部分更新。但是在单个事务中不支持多次更新。

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