6

我正在编写一个 Web 应用程序,让更多用户可以在 mongodb 的同一个文档中同时执行操作。我使用 mean.io 堆栈,但我对它很陌生。我想知道猫鼬如何管理并发。每个“用户单击”操作首先执行读取以获取文档,并在一些计算后执行保存。当然,读取-计算-保存序列不是原子的。mongoose 是否适用于“最后更改获胜”策略,还是会引发版本控制错误?在这种情况下使用队列有意义吗?

谢谢,最好的问候。

4

1 回答 1

6

是的,最后的改变会赢。

队列可能是解决问题的好选择,但我会建议另外两种方法:

  1. 您可以使用更高级的 mongodb 命令,例如 $inc ( http://docs.mongodb.org/manual/reference/operator/update/inc/ ) 来进行原子计算(如果您的计算太复杂,可能是不可能的)
  2. 如果您不一定需要随时提供正确的计数,您可以使用“大数据”方法并仅存储原始点击信息。每当您需要数据时(或者说每小时或每天),您都可以使用 mongodb 聚合框架或其 mapreduce 功能来计算正确的计数。
于 2014-01-20T08:29:48.833 回答