来自多个客户端的 MongoDB findAndModify

2024-03-03

我的 MongoDB 集合用作作业队列,有 3 个 C++ 机器从该集合中读取数据。问题是这三个人不能执行相同的工作。所有作业只需完成一次。

我通过在集合中搜索带有“isDone:False”的所有记录来获取所有未完成的作业,然后更新此文档“isDone:True”。但是如果两台机器同时找到相同的文档,它们就会执行相同的工作。我怎样才能避免这种情况?

编辑:我的问题是 - findAndModify 真的解决了这个问题吗? (看完之后确保 MongoDb findAndModify 中独占读取的方法? https://stackoverflow.com/questions/15505176/a-way-to-ensure-exclusive-reads-in-mongodbs-findandmodify)


是的,findAndModify解决了它。

Ref: 来自多个客户端的 MongoDB findAndModify https://stackoverflow.com/questions/15988230/mongodb-findandmodify-from-multiple-clients“…… 注意:此命令会获取受影响数据库的写锁,并会阻止其他操作,直到完成为止;然而,通常写锁是短暂的并且等同于其他类似的 update() 操作。 ……”

Ref: http://docs.mongodb.org/manual/reference/method/db.collection.update/#db.collection.update http://docs.mongodb.org/manual/reference/method/db.collection.update/#db.collection.update“…… 对于未分片的集合,您可以使用 $isolated 隔离运算符覆盖此行为,该运算符隔离更新操作并在更新期间阻止其他写入操作。请参阅隔离运算符。 ……”

Ref: http://docs.mongodb.org/manual/reference/operator/isolated/ http://docs.mongodb.org/manual/reference/operator/isolated/

问候, 莫阿西

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

来自多个客户端的 MongoDB findAndModify 的相关文章

随机推荐

  • 如何在没有虚拟化的 Macintosh 上进行“干净”测试?

    我在 Windows 上遇到的一件事是 当您正在开发的 Web 浏览器插件或程序假设安装了默认情况下并不总是存在于 Windows 上的某些内容时 一个完美的例子是 NET 很多运行 Windows XP 的人从未安装过任何版本的 NET
  • 更改列表视图中的颜色线

    如何更改列表视图中的颜色线 例如if line 4 then line is red 如果您想浏览整个列表并有条件地为每个项目着色 那么您可以使用 foreach ListViewItem lvw in myListView Items i
  • Jquery ui - 自动完成 - UTF8 字符集

    我正在处理这个 jquery 数据输入表单 其中我需要使用来自 mysql 的数据自动完成特定字段 我一切正常 自动完成通过 php 从 sql 检索数据 英语 拉丁字符的匹配非常好 问题是 当我输入希腊语时 我只得到区分大小写的匹配项 如
  • 如何在 git 中共享配置文件?

    我有想要在所有存储库中传播的编辑器设置 如果用户定义了自己的设置 那么它当然应该删除存储库选择 我想这样做 因为我有一个班级 每个学生都克隆该存储库 通常他们会忘记设置 core editor 设置并最终乱搞 vi 通常会导致仓库崩溃 就像
  • 压缩图像和调整图像大小有什么区别?安卓

    在我的 Android 应用程序中 我想将图像上传到服务器 解决服务器不接受大于2M图片的问题 但用户可以选择大于2M的图片 所以我想构建一个代码 使图像小于2M 我有两种方法 调整图像尺寸 如下 public static Bitmap
  • 在 Haskell 中重新排序类型参数

    我有一个关于类型参数的问题 我认为最好通过示例来表达 这段代码 newtype Triple a b c T a b c instance Functor Triple a b where fmap f T x y z T x y f z
  • 当我重载 subsref(下标引用)时,为什么 MATLAB 会抛出“输出参数过多”错误?

    As a 玩具示例 我有一个类 它只是将向量或矩阵包装在对象中 并包含创建它的时间戳 我正在尝试超载subsref以便 引用的工作方式与标准向量和矩阵类型完全相同 参考作品于exactly同样的方式 引用 换句话说 与单元格无关 引用允许我
  • 具有云功能的 Firebase 托管 - 如何清除/刷新 CDN 缓存?

    我按照该视频中的说明进行操作 到目前为止 一切都运行良好 直到我需要清除 CDN 中的旧 HTML https www youtube com watch v 7 2CJs VZk4 https www youtube com watch
  • 文件名中的变音符号导致 subversion 和 git (MacOS) 之间存在差异

    我的文件名带有变音符号 即 Expos pdf svn stat Expos pdf Expos pdf 我正在使用 subversion 和 git 不是 git svn 我正在从 subversion 迁移到 git 并希望能够共存一段
  • 在loudant搜索索引中添加功能

    我在 cloudant 中有一个 Json 文档 id 3 f812228f45b5f4e4962505561953ew245 rev 3 f812228f45b5f4e496250556195372b2 wiki page http en
  • hibernate模式验证错误的列但使用正常的int

    使用 hibernate 时我遇到了架构验证问题 该错误非常简单 它表示我的代码中预期的列类型和实际找到的列类型不匹配 但据我所知 它们确实匹配 在查看类似问题后 我添加了columnDefinition int 10 但这没有帮助 任何帮
  • Azure B2C 是否在多个应用程序之间提供“真正的”单点登录

    我目前正在试验 Azure B2C 并创建了一个充当单个身份服务器的租户 其中注册了 2 个应用程序 在不同的域上 The Azure B2C 文档 https learn microsoft com en us azure active
  • 将 UTC/GMT 时间转换为本地时间

    我们正在为 Web 服务客户端开发 C 应用程序 这将在 Windows XP PC 上运行 Web 服务返回的字段之一是日期时间字段 服务器返回 GMT 格式的字段 即末尾带有 Z 然而 我们发现 NET似乎做了某种隐式转换 并且时间总是
  • Nhibernate 存在于何处 queryOver

    我有以下对象 public class Document public Guid Id get set public ISet
  • 使用 docker-compose 在 Docker 容器中锁定 package.json 文件

    我正在使用 Docker for Mac 和 Docker Compose 来开发 Node js 应用程序 但遇到了错误包 json文件被锁定 运行后具体报错npm install save
  • iPhone应用程序开发中自定义搜索栏

    在我的应用程序中 我必须在表格视图的顶部添加一个搜索栏 我可以添加搜索栏 但问题是没有添加 ios 的默认搜索栏 我可以添加自定义搜索栏吗 我给出了一张图片来看看那里会有什么类型的搜索栏 你可以子类化UISearchBar并覆盖layout
  • Java 的 Desktop.browse 可以提供 HTML Target 以重用浏览器窗口吗?

    我正在将应用程序从使用 javax help 的浏览器移动到用户的桌面 Web 浏览器 但我想知道如何防止用户在单击文档的不同部分时打开许多窗口 选项卡 我没有看到任何方法可以在 java URI 中指定 HTML 目标或调用 Deskto
  • 多级类别的数据库结构(最佳方法)

    该用户对此采取的方法question https stackoverflow com questions 20078074 mysql multi level category structure数据库结构工作正常 然而 以关系数据库方法思
  • knex中批量更新

    我想使用执行批量更新Knex js http knexjs org 例如 UPDATE foo SET theValues WHERE idFoo 1 UPDATE foo SET theValues WHERE idFoo 2 具有值 n
  • 来自多个客户端的 MongoDB findAndModify

    我的 MongoDB 集合用作作业队列 有 3 个 C 机器从该集合中读取数据 问题是这三个人不能执行相同的工作 所有作业只需完成一次 我通过在集合中搜索带有 isDone False 的所有记录来获取所有未完成的作业 然后更新此文档 is