如何在Mongodb中解释失败的写入或添加过程



所以我几个星期以来一直在试图解决这个问题,但我似乎无法弄清楚。因此,MongoDB无法像我们通常理解的那样处理回滚(即当客户端向数据库添加信息时,例如用户名,但在注册过程中退出。现在,数据库只剩下一些与任何东西无关的"挂起"信息。MongoDb 如何处理这个问题? 或者,如果没有人能回答这个问题,也许他们可以指出我可以回答的来源/例子?谢谢。

MongoDB不支持

事务,则无法执行原子多语句事务以确保一致性。一次只能对单个集合执行原子操作。在处理NoSQL数据库时,您需要尽可能多地验证数据,他们很少抱怨某些事情。有一些解决方法或模式可以实现SQL,例如事务。例如,在您的情况下,您可以将用户的信息存储在临时集合中,检查数据有效性,然后将其存储到用户的集合中。

这应该是直截了当的,但是当我们处理多个文档时,事情会变得更加复杂。在这种情况下,您需要为交易创建指定的collection。例如

transaction collection
{
  id: ..,
  state : "new_transaction",
  value1 : values From document_1 before updating document_1,
  value2 : values From document_2 before updating document_2
}      
// update document 1
// update document 2

噢!! 更新document 1 or 2时出错了?不用担心,我们仍然可以从transaction collection中恢复旧值。这种模式称为补偿,以模仿SQL的事务行为。

最新更新