使用mongoose同时访问文档

时间:2014-01-20 08:00:05

标签: node.js mongodb mongoose mean-stack

我正在编写一个Web应用程序,其中更多用户可以在mongodb中的同一文档中同时执行操作。 我使用mean.io堆栈,但我对它很新。 我想知道mongoose如何管理并发。每次“用户点击”操作首先执行读取以获取文档,并在执行某些计算后执行保存。当然,序列read-calculate-save不是原子的。 mongoose是否使用'last change wins'策略,还是会引发版本控制错误? 在这种情况下使用队列是否有意义?

谢谢,最好的问候。

1 个答案:

答案 0 :(得分:5)

是的,最后的改变将获胜。

队列可能是解决问题的好方法,但我会建议其他两种方式:

  1. 您可以使用更高级的mongodb命令,例如$ inc(http://docs.mongodb.org/manual/reference/operator/update/inc/)进行atomically计算(如果您的计算过于复杂,则可能无法实现)
  2. 如果您不一定需要在任何时候获得正确的计数,您可以使用“大数据”方法并只存储原始点击信息。 无论何时需要数据(或者说每小时或每天),您都可以使用mongodb聚合框架或其mapreduce功能来计算正确的数量。