我有一个具有多个用户的Mean Stack应用程序,这些用户将同时使用该应用程序。我不担心如果他们在同一时间更新文档会发生什么,因为MongoDB会处理该问题。我的问题是这种情况
在这种情况下,用户2永远不会看到文档的更新版本。处理此问题的最佳方法是在请求中发送文档的原始版本,以查看其是否已更改,如果有则返回错误?
答案 0 :(得分:0)
我是MongoDB的新手,只是开始研究它。这个问题我也有,我想我有一个解决方案,尽管我仍然必须用一些代码进行测试。
在文档中创建一个版本控制字段。然后:
在独立服务器上,使用db.collection.findAndModify()并按_id和当前文档版本字段进行查询。将upsert设置为false。在即将更新的文档中增加版本字段。
修改单个文档时,findAndModify和update() 方法自动更新文档。
在副本集上使用Transactions
猫鼬5.2.0 includes this feature。
事务是MongoDB 4.0和Mongoose 5.2.0中的新增功能。交易次数 让您隔离执行多个操作,并可能撤消 如果其中一项失败,则执行所有操作。