mongodb中的乐观锁定-批量操作

时间:2019-08-06 21:57:53

标签: mongodb mongodb-java

我正在尝试找到最有效的方法,以利用乐观锁定来批量更新一些mongo文档。

到目前为止,我有一个Java代码段,表示对单个文档的更新。我确保数据库中文档的版本与我的更新请求中的版本匹配。如果不是这样,我会失败。看起来是这样:

Bson filter = and(
     eq("_id", new ObjectId("5d49e936b459ab4fccb08225")),
     eq("version", 1));

Bson update = combine(
     set("attribute", "B"),
     inc("version", 1));

UpdateResult updateResult = collection
     .updateOne(filter, update, new UpdateOptions().upsert(false));

if (updateResult.getModifiedCount() == 0) {
     throw new ConcurrentModificationException();
}

我想在一个批量请求中发送一批这样的更新(到不同的文档)。

我查看了updateMany方法并得出结论,如果我想跟踪哪些更新是成功的而哪些是由于乐观锁定而失败的,则该方法可能无效。 updateMany方法返回一个UpdateResult,它仅包含已修改文档的总数,而没有提供更新的文档ID。

是否有比使用异步驱动程序和逐个提交更新更有效的方法?也许我错过了一些东西。

我们可以假设一个批次的平均大小为数百。我正在使用Java mongo驱动程序3.10.2。

0 个答案:

没有答案