0

我在当前最新版本中使用 spring-boot-starter-data-mongodb-reactive 。我需要更新集合中许多文档中的计数字段,但每个文档的计数字段不同。我正在寻找一种执行批量更新的方法,这样我就不必为每个项目单独执行一百万次更新。

我的第一种方法是创建一个UpdateOneModel包含Criteria和 的列表Update。我可以从ReactiveMongoOperations实例中获取集合,但这感觉是一种非常尴尬的方式。它看起来像这样:

Mono<MongoCollection<Document>> collection = mongoOps.getCollection(mongoOps.getCollectionName(Foo.class));
BulkWriteOptions options = new BulkWriteOptions()
        .bypassDocumentValidation(true)
        .ordered(false);
return result.getCounts()
        .reduce(<Creating a map of ID to new count>)
        .map(<Creating an UpdateModel<Document> instance)
        .map(updates -> collection.map(c -> c.bulkWrite(updates, bulkWriteOptions)))
        .then();

这感觉像是尝试执行批量更新的一种奇怪(几乎是蛮力)的方式。我错过了什么吗?Spring 通常包含执行批量更新的方法,但它们的响应式 mongo 库显然不包含它。我还能尝试什么?

4

0 回答 0