在MongoDB中选择更新锁定已跳过

时间:2018-06-26 11:42:32

标签: mongodb

我有100多个工作线程,这些线程将轮询数据库以寻找新工作。

要执行一项工作,一个线程需要将一堆文档的状态从NEW更改为IN_PROGRESS,因此没有其他线程可以窥视相同的工作。

在PostgreSQL中使用SELECT FOR UPDATE SKIP LOCKED WHERE status = "NEW"语句可以很好地解决此问题。

在MongoDB中是否可以为单个文档进行这种原子更新?要一批吗?

1 个答案:

答案 0 :(得分:1)

有一个findAndModify方法,其功能与您针对单个文档所描述的完全一样。

对于一批产品,目前无法实现,

  

在MongoDB中,执行写操作,例如db.collection.update()db.collection.findAndModify()db.collection.remove()在单个文档级别是原子的

但是在MongoDB 4.0中,transactions才有可能。