作为CouchDB或NoSQL的新手,通常我无法找到更新两个文档的好方法,但要保证两个文档都更新,或者两者都不更新。使用CouchDB交易式更新两个文档
在我的用例中,每个文档都有一个布尔标志。为了说明,让我们假设我正在谈论布尔型属性isKing的type =“citizen”的文档。我想确保一次只有一个国王。当我想改变国王时,它变得棘手。这需要修改两个文件(为新国王设置isKing = true,并且对旧国王设置isKing = false)。
我该如何确保在一些不幸的并发更新之后,我不会以两位或零位国王结束?
我正在考虑bulk update,但它不起作用,因为它不支持事务。
编辑:我见过问题Can I do transactions and locks in CouchDB?,但它没有解决我的情况。它也涉及到CouchDB中的事务,但这就是相似之处的结束。问题在于事务性地读取&更新一个文档,而我正在询问有关两个文档的事务性更新。我没有找到对我的案例有用的其他问题的答案,但如果您认为它是重复的,请解释原因。
可能的重复:http://stackoverflow.com/questions/299723/can-i-do-transactions-and-locks-in-couchdb –
@ChrisSnow - 感谢您的评论。我已经在打开这个之前阅读过你提到的问题。我只是没有找到适用于我的案例的解决方案。主要区别在于我想一次更新两个文档。 – TMG
国家可以拥有其他文件,指向目前的国王,也许是一个国王的历史等,或者它可以被看作是一个事件,如KingElected和KingAbticated等文件... – Daniel