文档菜单
文档首页
/
关系型迁移器
/ /

嵌入式数组

本页内容

  • 关于此任务
  • 步骤
  • 示例

使用使用内嵌数组映射规则将子表的值作为数组元素插入到映射到父表的集合中的文档下。该内嵌数组映射规则是一个高级映射规则选项。必须显式将其添加到映射模型中。

  • 如果它映射的关联表位于外键关系的多边,则可用内嵌数组映射规则。

  • 包含主键的表也必须映射到MongoDB模型中的集合。

1
  1. 在左侧模式模型窗格中,点击位于MongoDB关系型标题下的一个集合。

    这将在屏幕右侧打开映射窗格。

2
  1. 映射界面,点击+ 添加创建新的映射规则或点击图标编辑现有规则。

  2. 迁移为下选择嵌入数组

3
  1. 从下拉列表中选择源表父集合的名称。

  2. 配置根路径

    • 前缀:指定规则层次结构。

    • 字段名:指定包含嵌入数组或文档的字段。

4

当两个表之间存在多个外键时,允许您选择嵌入哪个外键。此选项仅适用于具有多个外键链接的表或集合。

  1. 外键链接 下拉列表中选择要嵌入的外键名称。

5

允许您明确包含返回true 的行。这与表筛选器 不同,后者基于 SQL 查询进行筛选,并应用于特定表的所有行。映射规则筛选器仅应用于特定映射。

  1. 映射 选项卡上,点击 高级设置 旁边的 图标。

  2. 选择 添加映射规则筛选器 图标。

  3. 值表达式 文本框中输入有效的 JavaScript 筛选器表达式。

6

允许您对嵌入的数组进行排序并限制数组中的条目数量。您可以选择仅排序、仅限制或两者都选择。当限制为单个条目时,可以选择通过选择 创建原始值数组 将其嵌入为文档而不是单个元素的数组。

  1. 映射 选项卡上,点击 高级设置 旁边的 图标。

  2. 选择 添加数组条件 图标。

  3. 值表达式 文本框中输入筛选器。

  4. 排序方式和顺序 标题下,选择要排序的源字段并在之间切换以选择升序和

  5. 以选择降序。

    • 选择一个 限制 选项

    • 限制行数:输入数组返回的最大元素数量。默认值为 10

注意

  • 排除的字段无法进行排序。如果先前选择的排序字段在后续时间被排除,则移除数组条件。

  • 如果在持续作业的CDC阶段修改了数组,则排序和限制只考虑新修改的行和现有的数组元素,不考虑不在数组中的表中的其他值。

7
  1. 定义新映射规则的选项。在定义映射规则选项时,您可以

    • 更改集合名称。

      要更改集合名称,请点击名称文本框并输入新名称。点击文本框外以保存更改。如果名称已被使用,您将收到验证错误。

    • 添加计算字段以根据关系源列创建新字段。有关更多信息,请参阅计算字段

    • 更改字段名称。

    • 通过点击字段名称旁边的图标,将字段包含或排除在迁移作业中。

8
  1. 点击 保存并关闭

本节展示了嵌入式数组映射规则的关系输入和MongoDB输出。

在此示例中

  • 将嵌入式数组映射规则应用于Customer表。

  • 源表设置为Order

  • 前缀设置为(root)

  • 字段名称设置为orders

点击下面的选项卡以查看此示例的输入和输出

Customer

Id
Name
Address1
Address2
Address3
1
Joelynn Fawthrop
86 Dwight Pass
Carregal
3800-854

Orders

OrderID
CustomerID
TotalAmount
OrderStatusID
1
1
50.00
1
4
1
500.00
3

现在在Customer集合中的文档中,Order详细信息已嵌入为数组对象字段,称为Orders

所有客户的订单现在作为嵌套文档的数组在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
}
]
}

返回

新建文档