38.7.2. 操作の作成/更新
38.7.2.1. insert リンクのコピーリンクがクリップボードにコピーされました!
IN メッセージ本文から取得した新しいオブジェクトを MongoDB コレクションに挿入します。Document
または List
に変換するために型変換が試行されます。
シングル挿入とマルチ挿入の 2 つのモードがサポートされています。複数の挿入の場合、エンドポイントは、Document であるか、または Document
に変換できる限り、任意のタイプのオブジェクトのリスト、配列、またはコレクションを期待します。以下に例を示します。
from("direct:insert") .to("mongodb:myDb?database=flights&collection=tickets&operation=insert");
from("direct:insert")
.to("mongodb:myDb?database=flights&collection=tickets&operation=insert");
オペレーションは WriteResult を返します 。WriteConcern
または invokeGetLastError
オプションの値に応じて、getLastError()
がすでに呼び出されているかどうかが決まります。書き込み操作の最終的な結果にアクセスする場合は、WriteResult
で getLastError()
または getCachedLastError()
を呼び出して CommandResult
を取得する必要があります。次に、CommandResult.ok()
、CommandResult.getErrorMessage()
および/または CommandResult.getException()
を呼び出して結果を確認できます。
新しいオブジェクトの _id
はコレクション内で一意である必要があることに注意してください。値を指定しない場合、MongoDB が自動的に値を生成します。ただし、指定しても一意でない場合、挿入操作は失敗します (Camel が気付くには、invokeGetLastError を有効にするか、書き込み結果を待機する WriteConcern を設定する必要があります)。
これはコンポーネントの制限ではありませんが、MongoDB でより高いスループットを実現する方法です。カスタム _id
を使用している場合は、アプリケーションレベルで一意であることを確認する必要があります (これも良い方法です)。
挿入されたレコードの OID は、CamelMongoOid
キー (MongoDbConstants.OID
定数) の下のメッセージヘッダーに格納されます。保存される値は、単一の挿入の場合は org.bson.types.ObjectId
、複数のレコードが挿入された場合は java.util.List<org.bson.types.ObjectId>
です。
MongoDB Java Driver 3.x では、insertOne および insertMany オペレーションは void を返します。Camel 挿入操作は、挿入されたドキュメントまたはドキュメントのリストを返します。必要に応じて、各ドキュメントが新しい OID によって更新されることに注意してください。