216.5.4. 一括書き込み操作
216.5.4.1. bulkWrite
Camel 2.21 で利用可能
実行順序を制御すると共に書き込み操作を一括して実行します。insert、update、および delete 操作のコマンド が含まれる IN メッセージボディーとして List<WriteModel<DBObject
>> が必要です。
以下の例では、「scientist」フィールドの値を「Marie Curie」に設定し、ID で新しいサイエンティスト「Pierre 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 ドキュメントから抽出) | 想定されるタイプ |
---|---|---|---|
|
| 順序付けされた操作または順序付けされていない操作の実行を実行します。デフォルトは true です。 | boolean/Boolean |