35.7.2.2. save
save 操作は upsert (UPdate、inSERT)操作と同等で、レコードが更新され、存在しない場合は、すべて 1 つのアトミック操作に挿入されます。MongoDB は _id
フィールドに基づいてマッチングを実行します。
更新の場合、オブジェクトは完全に置き換えられ、MongoDB の $modifiers の 使用が許可されないことに注意してください。そのため、オブジェクトがすでに存在する場合は、2 つのオプションがあります。
- クエリーを実行して、オブジェクト全体をそのフィールドすべてと共に最初に取得します(効率的ではない場合もあります)、Camel 内で変更し、保存します。
- $modifiers とともに更新操作を使用してください。この操作は、代わりにサーバー側で更新を実行します。upsert フラグを有効にすることができます。この場合、挿入が必要な場合、MongoDB は $modifiers をフィルタークエリーオブジェクトに適用し、結果を挿入します。
保存されるドキュメントに _id
属性が含まれていない場合、操作は挿入され、作成された新しい _id
は CamelMongoOid
ヘッダーに配置されます。
以下に例を示します。
from("direct:insert") .to("mongodb:myDb?database=flights&collection=tickets&operation=save");
from("direct:insert")
.to("mongodb:myDb?database=flights&collection=tickets&operation=save");
// route: from("direct:insert").to("mongodb:myDb?database=flights&collection=tickets&operation=save"); org.bson.Document docForSave = new org.bson.Document(); docForSave.put("key", "value"); Object result = template.requestBody("direct:insert", docForSave);
// route: from("direct:insert").to("mongodb:myDb?database=flights&collection=tickets&operation=save");
org.bson.Document docForSave = new org.bson.Document();
docForSave.put("key", "value");
Object result = template.requestBody("direct:insert", docForSave);