使用 Couchbase 查找和修改

FindAndModify using Couchbase

我有一组文档需要由多个客户端节点处理。 基本上,每个文档应该只由 1 个客户端节点处理。

所以我想到的是为每个节点创建一个唯一的clientId,并将clientId设置为正在处理的文档,以告诉其他客户端正在处理该文档。

几年前,我已经使用 Mongodb 实现了这种方法,方法是使用 findAndModify 运算符,它保证了设置 clientId 的 原子性到文档并将其返回。 现在我正在 Couchbase 中寻找可能类似的方法,但找不到。

知道怎么做吗?

我们在项目中处理过类似的场景。我们所做的是创建一个文档并将其他处理文档保存在其中。如果该文档不存在于其中,那么您可以防止它被其他客户端更新。

我认为您要搜索的是名为 getAndLock 的方法。它将保证只有一台服务器正在读取该文档。

如果服务器在此过程中发生故障,则使用属性更新文档可能不是一个好主意,因为没有其他服务器会接管那些已经分配给故障服务器的文档。