17.3. MongoDB コレクションのドキュメントの操作
インテグレーションでは、MongoDB コレクションでドキュメントを検索、更新、削除、削除、カウント、または追加できます。これには、MongoDB コネクションをフローの途中に追加するか、シンプルなインテグレーションの最後のコネクションとして追加します。
前提条件
- MongoDB コネクションが作成されている必要があります。
- コネクションが操作する MongoDB コレクションの名前を知っておく必要があります。
- インテグレーションを作成または編集することになります。Fuse Online でインテグレーションに追加するよう要求されます。または、Fuse Online で最後のコネクションを選択するよう要求されます。
手順
- Add to Integration ページで、MongoDB コネクションの追加先のプラス記号をクリックします。シンプルなインテグレーションの最後のコネクションを追加する場合は、このステップをスキップします。
- 使用する MongoDB コネクションをクリックします。
- Choose an action ページで、コネクションが実行するアクションを選択します。
アクションを設定するには、Collection name フィールドに、コネクションが操作するコレクションの名前を入力します。
Insert アクションを選択した場合:
- 接続の設定が完了します。
- インテグレーションによってこの MongoDB コネクションに渡されるデータに、コレクションに追加するドキュメントを指定する JSON 表記が含まれるようにしてください。
- Next をクリックしてこのコネクションをインテグレーションに追加します。
以下の表には、他のアクションを設定する場合に、2 つ目のフィールドに指定するものが記載されています。
2 つ目のフィールドは、操作するドキュメントや、場合によっては操作の詳細を特定する JSON 表記式になります。受信ソースフィールドを式の識別子にマップする計画がある場合は、式に
:#variable-name
を指定します。また、この表には Insert アクションに関する説明も記載されています。
アクション 動作の説明 パラメーターフィールド 戻り値 Count
指定の count 式を満たすドキュメントの数をカウントします。
Count expression フィールドには、
{"test":"unit"}
の形式で JSON フィルター式を指定します。アクションは、test
属性の値がunit
であるドキュメントの数をカウントします。見つかったドキュメントの数を指定する
java.lang.Long
のインスタンス。Delete
コレクションから 1 つまたは複数のドキュメントを削除します。
Delete expression フィールドには、
{"test":"unit"}
の形式で JSON 式を指定します。unit
が値のtest
属性がある各ドキュメントを削除します。削除されたドキュメントの数を指定する
java.lang.Long
のインスタンス。Find
指定したフィルター式に一致するすべてのドキュメントを検索します。
Filter expression フィールドに、1 つ以上のドキュメントを特定する JSON 表記文字列を指定します。
リストを指定する JSON 表記 (配列)。各リスト要素は、フィルター式と一致するドキュメントを特定し、ドキュメントの内容を提供します。ドキュメントが見つからない場合、アクションによって空のリストが返されます。
コレクションのデータモデルを理解できる必要があります。コレクションが JSON スキーマに準拠する場合、返されたリスト要素はこのスキーマに準拠するため、このスキーマを理解できる必要があります。詳細は MongoDB Data Models を参照してください。
後続のデータマッパーステップで Find アクションからの出力データを使用するには、コレクションが JSON スキーマに準拠している必要があります。これにより、データマッパーはデータフィールドを表示できます。詳細は、JSON スキーマバリデーションに関する MongoDB ドキュメント を参照してください。Insert
1 つまたは複数のドキュメントをコレクションに追加します。
ドキュメントを挿入するためのアクション設定パラメーターはありません。MongoDB コネクションが受信するデータには、コレクションに追加する 1 つまたは複数のドキュメントを指定する JSON 表記が含まれている必要があります。
リストを指定する JSON 表記 (配列)。各リスト要素はこのアクションによって挿入されたドキュメントです。
Update
コレクションの 1 つまたは複数のドキュメントを更新します。
Filter criteria フィールドに、2 つの引数の配列を指定します。最初の引数は、更新するドキュメントを識別するフィルター式です。2 つ目の引数は、ドキュメントの更新方法を指定する MongoDB 更新ステートメントです。更新ステートメントの形式は、https://docs.mongodb.com/manual/reference/method/db.collection.update/ に説明されています。(例:
[{"_id":11},{$set: {"test":"updated!"}}]
)更新されたドキュメントの数を指定する
java.lang.Long
のインスタンス。Upsert
Upsert expression に一致するドキュメントがない場合に、コレクションで 1 つ以上のドキュメントを更新するか、ドキュメントを作成します。
Upsert expression フィールドに、1 つまたは複数のドキュメントを特定する JSON 表記を指定します。このアクションはこの式を使用して一致するドキュメントを検出します。コレクションで一致するドキュメントが見つからなかった場合、更新を行います。一致するドキュメントが見つからなかった場合、アクションによって新しいドキュメントが作成されます。MongoDB コネクションが受信するデータには、以下を指定する JSON 表記が含まれている必要があります。
* 挿入または更新操作であるかどうかを識別するための
_id
フィールド。* 追加または更新するコンテンツ。
更新されたドキュメントの数または新しい挿入されたドキュメントの ID を指定する
com.mongodb.client.result.UpdateResult
のインスタンス。各アクションは応答を返します。これが最後のコネクションである場合、応答は失われますが Log ステップを追加して応答をキャプチャーすることができます。
- Next をクリックします。
- 任意手順:これが最後のコネクションである場合、代わりに Log ステップを追加して、インテグレーションを終了します。Log ステップを設定して応答をキャプチャーします。
結果
インテグレーションビジュアライゼーションで追加した場所にコネクションが表示されます。
次のステップ
必要な他のコネクションをフローに追加します。データを処理する他のステップを追加します。必要なデータマッピングステップを追加してインテグレーションを完了します。MongoDB コネクションアクションの設定時、アクション式で :#variable-name
識別子をアクション式として指定した場合は、必ずソースフィールドを MongoDB コネクション変数フィールドにマップしてください。