MongoDB更新不低于零

时间:2016-10-24 08:36:58

标签: mongodb mongoose

我正在为我的应用制作包含一组项目的实时功能。每个用户都可以获得一定数量的项目,但我想知道如何处理这个问题:

Items left: 7
User A wants 5 items
User B wants 5 items

他们都在同一时间按下了按钮。 因为写/锁定的事情,如果我这样做,只有一个人得到它?或者他们都会得到它,我的物品数量将是-3或?

var number = 5
    .update(
        {$where : "items > number -1"},
        {$inc: {"items": -number}},
        {multi: true}
    );

1 个答案:

答案 0 :(得分:0)

在MongoDB手册中:

  

MongoDB允许多个客户端读取和写入相同的数据。为了确保一致性,它使用锁定和其他并发   控制措施,以防止多个客户端修改相同的   一条数据同时。这些机制共同保证   对单个文档的所有写入都发生在完全或不在   所有客户都不会看到数据的不一致视图。

所以MongoDB负责处理它。