我正在使用mongoose代替mongodb。
在nodejs express服务器的请求和响应中,通常需要通过mongoose对mongodb进行多个查询。
在许多情况下,可能会出现前几个查询成功执行,其余查询在事务下全部失败的情况。
现在我需要将我的数据库状态回滚到最初状态。
那么在mongodb中如何高效地回滚呢? 请提供一些适当的参考。
我正在使用mongoose代替mongodb。
在nodejs express服务器的请求和响应中,通常需要通过mongoose对mongodb进行多个查询。
在许多情况下,可能会出现前几个查询成功执行,其余查询在事务下全部失败的情况。
现在我需要将我的数据库状态回滚到最初状态。
那么在mongodb中如何高效地回滚呢? 请提供一些适当的参考。
我同意Hector的观点。如果您需要进行多个文档交易,那么Mongo可能不适合您。您能否将数据结构嵌入到单个文档中?那么您就可以获得所需的回滚操作。
另一个选择是查看Mongo克隆TokuMX,它提供跨多个文档的事务处理。
学习Mongo教程
我找到了一个链接,可以用于执行两阶段提交(但不一定保证):
http://docs.mongodb.org/manual/tutorial/perform-two-phase-commits/
无论您在MongoDB上加什么,它都不支持传统的ACID数据库事务。这不是Mongoose或Express.js的问题,而是MongoDB的特性。
MongoDB支持原子操作,这意味着保存到集合的操作要么完全成功,要么失败,换句话说,您不会得到对集合中单个文档的部分更新。但是MongoDB不支持单个事务中的多个更新。
http://docs.mongodb.org/manual/faq/fundamentals/#does-mongodb-support-transactions