是否可以使用猫鼬用数学表达式更新文档?

时间:2018-12-02 02:09:42

标签: mongodb mongoose

这主要是为了解决竞争问题(例如,多个线程试图更改单个文档)。

通常,如果我想更新文档的属性,则需要使用fine,首先读取文档的当前输出,进行一些数学运算,然后update文档。

当我有多个线程试图更改单个文档时,这有点令人不安,我不得不放置一个服务来对本身可能效率不高的突变进行排队。

是否可以使用数学表达式更新文档,例如:

db.album.updateOne({albumid},{view: $view + 1},{upsert:true});

1 个答案:

答案 0 :(得分:2)

据我了解,您正在尝试做的工作是$inc field update operator

  

$ inc运算符接受正值和负值。   如果该字段不存在,则$ inc创建该字段并设置该字段   到指定值。   在具有空值的字段上使用$ inc运算符将生成一个   错误。   $ inc是单个文档中的原子操作。

db.products.update(
   { sku: "abc123" },
   { $inc: { quantity: -2 } }  // substract 2 from quantity
)
相关问题