38.7.4. 批量写操作
38.7.4.1. bulkWrite 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
在批量执行写入操作时,使用控制顺序执行。需要 List<WriteModel<Document >> 作为 IN 消息正文,其中包含插入、更新和删除操作的命令。
以下示例将插入一个新的科学家"Pierre Curie",通过将"scientist"字段的值设置为"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 文档中提取) | 预期类型 |
|---|---|---|---|
|
|
| 执行有序或未排序的操作执行。默认值为 true。 | boolean/Boolean |