216.5.2.3. 更新
コレクションで 1 つまたは複数のレコードを更新します。正確に 2 つの要素が含まれる IN メッセージボディーとして List<DBObject> が必要です。
- 要素 1(インデックス 0)pid フィルタークエリー gitops は、通常のクエリーオブジェクトと同じように、影響を受けるオブジェクトを決定します。
- 要素 2(インデックス 1)pid 更新ルールは、一致したオブジェクトの更新方法。MongoDB の すべての修飾子操作 がサポートされます。
Multiupdates。デフォルトでは、MongoDB は複数のオブジェクトがフィルタークエリーに一致する場合でも 1 つのオブジェクトのみを更新します。MongoDB に対して一致する すべて のレコードを更新するように指示するには、CamelMongoDbMultiUpdate
IN メッセージヘッダーを true
に設定します。
CamelMongoDbRecordsAffected
キーのあるヘッダー(MongoDbConstants.RECORDS_AFFECTED
定数)と更新されたレコード( WriteResult.getN()から派生)を返します。
以下の IN メッセージヘッダーをサポートします。
ヘッダーキー | クイック定数 | 説明(MongoDB API ドキュメントから抽出) | 想定されるタイプ |
---|---|---|---|
|
| If the update to apply all objects matching.See http://www.mongodb.org/display/DOCS/Atomic+Operations | boolean/Boolean |
|
| 要素が存在しない場合にデータベースが要素を作成するべきかどうか | boolean/Boolean |
たとえば、以下では "scientist" フィールドの値を "Darwin" に設定して、filterField フィールドが true である すべて のレコードを更新します。
// route: from("direct:update").to("mongodb:myDb?database=science&collection=notableScientists&operation=update"); DBObject filterField = new BasicDBObject("filterField", true); DBObject updateObj = new BasicDBObject("$set", new BasicDBObject("scientist", "Darwin")); Object result = template.requestBodyAndHeader("direct:update", new Object[] {filterField, updateObj}, MongoDbConstants.MULTIUPDATE, true);