34.7.4. 批量写入操作
34.7.4.1. bulkWrite
批量执行写入操作,控制执行顺序。需要 List<WriteModel<Document
> 作为 IN 消息正文,其中包含用于插入、更新和删除操作的命令。
下面的示例将插入新的科学家"Pierre Curie",将"科学家"字段的值设置为 "Marie Curie" 并使用 id "3" 删除记录:
// route: from("direct:bulkWrite").to("mongodb:myDb?database=science&collection=notableScientists&operation=bulkWrite"); List<WriteModel<Document>> bulkOperations = Arrays.asList( new InsertOneModel<>(new Document("scientist", "Pierre Curie")), new UpdateOneModel<>(new Document("_id", "5"), new Document("$set", new Document("scientist", "Marie Curie"))), new DeleteOneModel<>(new Document("_id", "3"))); BulkWriteResult result = template.requestBody("direct:bulkWrite", bulkOperations, BulkWriteResult.class);
默认情况下,操作会按顺序执行,并在第一个写入错误上中断,而不会处理列表中任何剩余的写操作。要指示 MongoDB 继续处理列表中剩余的写操作,请将 CamelMongoDbBulkOrdered
IN 邮件标题设置为 false
。未排序的操作并行执行,此行为无法保证。
标头密钥 | 快速持续 | 描述(从 MongoDB API doc中提取) | 预期类型 |
---|---|---|---|
|
| 执行排序或未排序的操作执行。默认值为 true。 | boolean/Boolean |