埋め込み配列
Embedded arrayマッピング ルールを使用して、子テーブルの値を配列要素として、親テーブルにマップされたコレクション内のドキュメントの下に挿入します。 Embedded arrayマッピングルールは、高度なマッピングルールのオプションです。 マッピング モデルに明示的に追加する必要があります。
このタスクについて
Embedded arrayマッピング ルールは、マッピング元の関係テーブルが外部キー関係の多数の側にある場合に使用できます。
プライマリキーを含むテーブルも、MongoDB モデル内のコレクションにマップする必要があります。
手順
(任意)マッピング ルール フィルターを構成する
式が true
を返す行を明示的に含めることができます。 これは、SQL クエリに基づいてフィルタリングし、特定のテーブルのすべての行に適用されるテーブル フィルターとは異なります。 マッピング ルール フィルターは特定のマッピングにのみ適用されます。
Mappingsペインで次をクリックします: Advanced settingsの横にあるアイコン。
[ Add mapping rule filterを選択しますアイコン。
Value expressionテキスト ボックスに有効な JavaScript フィルター式を入力します。
(任意)配列条件を構成する
埋め込み配列をソートし、その配列内のエントリの量を制限することができます。 ソートのみ、制限のみ、またはその両方を適用できます。 を 1 つのエントリに制限する場合、 Create an array of primitive valuesを選択することで、単一要素の配列ではなくドキュメントとして埋め込むオプションがあります。 。
Mappingsペインで次をクリックします: Advanced settingsの横にあるアイコン。
[ Add array conditionsを選択しますアイコン。
Value expressionテキスト ボックスにフィルターを入力します。
Sort by and order見出しで、並べ替えるソース フィールドを選択し、 間で切り替える昇順の場合と降順の場合。
Limitオプションを選択します:
No limit: No limit
Limit number of rows: 配列で返される要素の最大数を入力します。 デフォルト値は
10
です。
注意
除外されたフィールドはソートできません。 以前に選択されたソート フィールドが後で除外された場合、配列条件は削除されます。
連続したジョブの CDC ステージ中に配列が変更された場合、ソートと制限では、新しく変更された行と既存の配列要素のみが考慮され、配列にないテーブルの他の値は考慮されません。
フィールドを構成する
新しいマッピング ルールの オプションを定義します。 マッピングルールのオプションを定義する際、次のことが可能です。
コレクション名を変更します。
コレクション名を変更するには、 Nameテキストボックスをクリックして新しい名前を入力します。 Click outside of the text box to save the change. 名前がすでに使用されている場合は、検証エラーが表示されます。
計算フィールドを追加して、リレーショナル ソース列に基づいて新しいフィールドを作成します。 詳細については、「計算フィールド 」を参照してください。
フィールド名を変更します。
移行ジョブにフィールドを含めるまたは除外するには、フィールド名の横にある アイコンをクリックします。
例
このセクションでは、 Embedded arrayマッピング ルールのリレーショナル入力と MongoDB 出力を示します。
埋め込み配列
この例では、次のことが行われます。
Embedded Arrayマッピング ルールがCustomerテーブルに適用されます。
Source tableはOrderに設定されます。
Prefixは(root)に設定されます。
Field Nameはordersに設定されます。
この例の入力と出力を表示するには、以下のタブをクリックします。
Customer
テーブル:
id | 名前 | Address1 | Address2 | Address3 |
---|---|---|---|---|
1 | Joelynn Fawthrop | 86 Dwift パス | Carregal | 3800-854 |
Orders
テーブル:
注文ID | カスタマー ID | TotalAmount | OrderStatusID |
---|---|---|---|
1 | 1 | 50.00 | 1 |
4 | 1 | 500.00 | 3 |
Customer
コレクション内のドキュメントには、 Orders
と呼ばれるオブジェクト フィールドの配列として埋め込まれたOrder
の詳細が埋め込まれています。
すべてのカスタマー注文がネストされたドキュメントの配列としてCustomer
コレクションに表示されるようになりました。
{ "_id": { "CustomerID": 1 }, "Name": "Joelynn Fawthrop", "Address1": "86 Dwight Pass", "Address2": "Carregal", "Address3": "3800-854", "Orders": [ { "OrderID": 1, "CustomerID": 1, "TotalAmount": 50, "OrderStatusID": 1 }, { "OrderID": 4, "CustomerID": 1, "TotalAmount": 500, "OrderStatusID": 1 } ] }