227.6.4. 批量写入操作

227.6.4.1. bulkWrite

可作为 Camel 2.21 可用

批量执行写入操作,控制执行顺序。需要 List<WriteModel<DBObject > 作为 IN 消息正文,其中包含用于插入、更新和删除操作的命令。

下面的示例将插入新的科学家"Pierre Curie",将"科学家"字段的值设置为 "Marie Curie" 并使用 id "3" 删除记录:

// route: from("direct:bulkWrite").to("mongodb:myDb?database=science&collection=notableScientists&operation=bulkWrite");
List<WriteModel<DBObject>> bulkOperations = Arrays.asList(
            new InsertOneModel<>(new BasicDBObject("scientist", "Pierre Curie")),
            new UpdateOneModel<>(new BasicDBObject("_id", "5"),
                                 new BasicDBObject("$set", new BasicDBObject("scientist", "Marie Curie"))),
            new DeleteOneModel<>(new BasicDBObject("_id", "3")));

BulkWriteResult result = template.requestBody("direct:bulkWrite", bulkOperations, BulkWriteResult.class);

默认情况下,操作会按顺序执行,并在第一个写入错误上中断,而不会处理列表中任何剩余的写操作。要指示 MongoDB 继续处理列表中剩余的写操作,请将 CamelMongoDbBulkOrdered IN 邮件标题设置为 false。未排序的操作并行执行,此行为无法保证。

标头密钥快速持续描述(从 MongoDB API doc中提取)预期类型

CamelMongoDbBulkOrdered

MongoDbConstants.BULK_ORDERED

执行排序或未排序的操作执行。默认值为 true。

boolean/Boolean