我想在MongoDB上模拟一个事务,您想知道是否有更好的解决方案。我有一个数组内部的文档。我想增加价值这一点。但是,如果同时另一个用户选择了具有相同值的文档,则会导致错误的数据。必须等到更新被解决,并且只有在另一个用户可以请求文档并且他也增加arry之后。有什么建议吗?
感谢
您应该让mongo处理这些并发问题。它知道如何处理这样的情况,并且每次更新都是原子性的。
您可以只指定要增加的金额,而不是提交要更新的实际值。我建议使用适当的运算符来允许mongo完成它的工作。如果您所做的只是对某个值进行增量,则可以使用$inc
运算符。
取自链接文档:
$inc
运算符将字段增加指定值,并具有以下形式:{ $inc: { <field1>: <amount1>, <field2>: <amount2>, ... } }
若要在嵌入文档或数组中指定,请使用点表示法。
请注意,此方法也适用于递减值;只需传递一个负值作为金额。
从4.0版本开始,MongoDB将增加对多文档事务的支持。事务将是多语句的,语法类似于start_transaction和commit_transaction。
有关详细信息,请访问此链接:https://www.mongodb.com/blog/post/multi-document-transactions-in-mongodb?jmp=community