Docs Menu
Docs Home
/
Relational Migrator
/ /

埋め込み配列

項目一覧

  • このタスクについて
  • 手順

Embedded arrayマッピング ルールを使用して、子テーブルの値を配列要素として、親テーブルにマップされたコレクション内のドキュメントの下に挿入します。 Embedded arrayマッピングルールは、高度なマッピングルールのオプションです。 マッピング モデルに明示的に追加する必要があります。

  • Embedded arrayマッピング ルールは、マッピング元の関係テーブルが外部キー関係の多数の側にある場合に使用できます。

  • プライマリキーを含むテーブルも、MongoDB モデル内のコレクションにマップする必要があります。

1
  1. 左側のSchema modelペインで、 MongoDBまたはRelationalヘッダーの下のコレクションをクリックします。

    これにより、画面の右側でMappingsペインが開きます。

2
  1. Mapping画面から+ Addをクリックして新しいマッピング ルールを作成するか、次をクリックします:既存のルールを編集するには、 アイコンを使用します。

  2. Embedded arrayMigrate table as を選択します。

3
  1. ドロップダウンからSource tableまたはParent collectionの名前を選択します。

  2. ルート パスを設定します。

    • Prefix: ルール階層を指定します。

    • Field name: 埋め込み配列またはドキュメントを含むフィールドを指定します。

4

2 つのテーブル間に複数の外部キーがある場合に、どの外部キーに埋め込むかを選択できます。 このオプションは、複数の外部キー リンクを持つテーブルまたはコレクションにのみ表示されます。

  1. [ Foreign key linkドロップダウンから埋め込む外部キーの名前を選択します。

5

式が trueを返す行を明示的に含めることができます。 これは、SQL クエリに基づいてフィルタリングし、特定のテーブルのすべての行に適用されるテーブル フィルターとは異なります。 マッピング ルール フィルターは特定のマッピングにのみ適用されます。

  1. Mappingsペインで次をクリックします: Advanced settingsの横にあるアイコン。

  2. [ Add mapping rule filterを選択しますアイコン。

  3. Value expressionテキスト ボックスに有効な JavaScript フィルター式を入力します。

6

埋め込み配列をソートし、その配列内のエントリの量を制限することができます。 ソートのみ、制限のみ、またはその両方を適用できます。 を 1 つのエントリに制限する場合、 Create an array of primitive valuesを選択することで、単一要素の配列ではなくドキュメントとして埋め込むオプションがあります。

  1. Mappingsペインで次をクリックします: Advanced settingsの横にあるアイコン。

  2. [ Add array conditionsを選択しますアイコン。

  3. Value expressionテキスト ボックスにフィルターを入力します。

  4. Sort by and order見出しで、並べ替えるソース フィールドを選択し、 間で切り替える昇順の場合と降順の場合。

  5. Limitオプションを選択します:

    • No limit: No limit

    • Limit number of rows: 配列で返される要素の最大数を入力します。 デフォルト値は10です。

注意

  • 除外されたフィールドはソートできません。 以前に選択されたソート フィールドが後で除外された場合、配列条件は削除されます。

  • 連続したジョブの CDC ステージ中に配列が変更された場合、ソートと制限では、新しく変更された行と既存の配列要素のみが考慮され、配列にないテーブルの他の値は考慮されません。

7
  1. 新しいマッピング ルールの オプションを定義します。 マッピングルールのオプションを定義する際、次のことが可能です。

    • コレクション名を変更します。

      コレクション名を変更するには、 Nameテキストボックスをクリックして新しい名前を入力します。 Click outside of the text box to save the change. 名前がすでに使用されている場合は、検証エラーが表示されます。

    • 計算フィールドを追加して、リレーショナル ソース列に基づいて新しいフィールドを作成します。 詳細については、「計算フィールド 」を参照してください。

    • フィールド名を変更します。

    • 同期ジョブにフィールドを含めるか除外するには、次をクリックします。フィールド名の横にあるアイコン。

8
  1. [Save And Close] をクリックします。

このセクションでは、 Embedded arrayマッピング ルールのリレーショナル入力と MongoDB 出力を示します。

この例では、次のことが行われます。

  • Embedded Arrayマッピング ルールがCustomerテーブルに適用されます。

  • Source tableOrderに設定されます。

  • Prefix(root)に設定されます。

  • Field Nameordersに設定されます。

この例の入力と出力を表示するには、以下のタブをクリックします。

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
}
]
}

戻る

新しいドキュメント