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中提取)预期类型

CamelMongoDbBulkOrdered

MongoDbConstants.BULK_ORDERED

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

boolean/Boolean

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.