作爲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