MongoDB - 模拟事务

时间:2014-10-20 13:05:24

标签: mongodb

我想在MongoDB上模拟一个事务,你想知道是否有更好的解决方案。我有一个包含在数组中的文档。我想增加这个值。但是,如果同时另一个用户选择具有相同值的文档,则会导致错误的数据。必须等到更新得到解决,并且只有在另一个用户可以请求文档之后,他才会增加arry。 任何消化?

三江源

2 个答案:

答案 0 :(得分:1)

你应该让mongo处理这些并发问题。它知道如何处理这样的情况,每次更新都是原子的。

您可以仅指定要增加的金额,而不是提交要更新的实际值。我建议使用适当的运算符来允许mongo完成它的工作。如果你所做的只是一个值的增量,你可以使用$inc operator

取自链接文档:

  

$inc运算符按指定值递增字段,其格式如下:

{ $inc: { <field1>: <amount1>, <field2>: <amount2>, ... } }
     

要在嵌入文档或数组中指定a,请使用dot notation

请注意,此方法也可用于递减值;只需传递一个负值作为金额。

答案 1 :(得分:0)

从4.0版开始,MongoDB将添加对多文档事务的支持。 事务将是多语句,语法如 start_transaction commit_transaction

有关详细信息,请访问此链接:https://www.mongodb.com/blog/post/multi-document-transactions-in-mongodb?jmp=community