我想在MongoDB上模擬一個事務,並想知道是否有更好的解決方案。我有一個數組內的文檔。我想增加這個值。但是,如果同時另一個用戶選擇具有相同值的文檔,將導致錯誤的數據。必須等到更新解決爲止,並且只有在另一個用戶可以請求該文檔並且他也增加了這個文件之後。 任何消化?MongoDB - 模擬交易
Thankyou
我想在MongoDB上模擬一個事務,並想知道是否有更好的解決方案。我有一個數組內的文檔。我想增加這個值。但是,如果同時另一個用戶選擇具有相同值的文檔,將導致錯誤的數據。必須等到更新解決爲止,並且只有在另一個用戶可以請求該文檔並且他也增加了這個文件之後。 任何消化?MongoDB - 模擬交易
Thankyou
你應該讓mongo處理這些併發問題。它知道如何處理這樣的情況,每次更新都是原子的。
而不是提交要更新的實際值,您可以只指定要增加的數量。我會建議使用適當的操作員讓mongo完成它的工作。如果你所做的只是一個值的增量,你可以使用$inc
operator。
從鏈接的文檔摘自:
的
$inc
操作者通過一個指定的值遞增一個字段,並具有以下形式:{ $inc: { <field1>: <amount1>, <field2>: <amount2>, ... } }
要嵌入的文檔中或者在一個陣列指定,請使用dot notation。
請注意,此方法也適用於遞減值;只需傳遞一個負值即可。
從版本4.0開始,MongoDB將添加對多文檔事務的支持。 交易將是多語句,語法如start_transaction和commit_transaction。
詳情,請訪問此鏈接:https://www.mongodb.com/blog/post/multi-document-transactions-in-mongodb?jmp=community
我建議你閱讀**「模仿事務行爲」 ** **從「MongoDB的應用設計模式」 **和你的情況,你可以閱讀**「樂觀更新本書的補償'**部分 – Disposer 2014-10-20 13:24:29