批量更新 Spring 数据 MongoDB 被动

Bulk Update with Spring Data MongoDB Reactive

如何使用 ReactiveMongoTemplate 执行 bulk perations

基本上我想使用 db.<collection_name>.initializeUnorderedBulkOp() 初始化批量并使用 <bulk>.execute() 执行它。

我知道有一种方法可以使用指定的简单 MongoTemplate 来做到这一点 here 但我找不到任何方法如何在反应中做到这一点。

我终于成功地使用MongoCollection.bulkWrite方法执行批量写入。

reactiveMongoTemplate.getCollection("assets_refs").flatMap(mongoCollection -> {
        var operations = entities.stream().map(entity -> {
            Document doc = new Document();
            reactiveMongoTemplate.getConverter().write(entity, doc);
            var filter = new Document("externalId", entity.getExternalId());
            return new UpdateOneModel<Document>(filter, new Document("$set", doc), new UpdateOptions().upsert(true));
        }).toList();
        return Mono.from(mongoCollection.bulkWrite(operations));
    })