Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 如何使用mongo实现线程安全查找和更新许多行为_Mongodb_Thread Safety - Fatal编程技术网

Mongodb 如何使用mongo实现线程安全查找和更新许多行为

Mongodb 如何使用mongo实现线程安全查找和更新许多行为,mongodb,thread-safety,Mongodb,Thread Safety,想创建一个工人服务,如,使用mongo 存储状态为PENDING(初始)、WORKING和DONE的作业对象(文档) 工作线程检索挂起的作业,因此其他工作线程不会在同一个作业上工作,因此在检索数据时需要将状态更改为“正在工作” 看起来mongo在原子上有这样的承诺但是 它在单个文档上工作-希望每个线程检索一批作业 文件管理器字段应唯一索引-状态不是uniq 我必须在更新后获得文档,而不仅仅是获得成功状态,如update,incr等 我不想在获取文档时创建锁(至少在应用程序中…) (我知道有比

想创建一个工人服务,如,使用mongo

存储状态为
PENDING
(初始)、
WORKING
DONE
的作业对象(文档)

工作线程检索挂起的作业,因此其他工作线程不会在同一个作业上工作,因此在检索数据时需要将状态更改为“正在工作”

看起来mongo在原子上有这样的承诺但是

  • 它在单个文档上工作-希望每个线程检索一批作业
  • 文件管理器字段应唯一索引-状态不是uniq
我必须在更新后获得文档,而不仅仅是获得成功状态,如
update
incr

我不想在获取文档时创建锁(至少在应用程序中…)

(我知道有比mongo更好的解决方案,但必须使用mongo)

有没有关于如何做到这一点的建议