嵌入式数组
使用使用内嵌数组映射规则将子表的值作为数组元素插入到映射到父表的集合中的文档下。该内嵌数组映射规则是一个高级映射规则选项。必须显式将其添加到映射模型中。
关于此任务
如果它映射的关联表位于外键关系的多边,则可用内嵌数组映射规则。
包含主键的表也必须映射到MongoDB模型中的集合。
步骤
(可选)配置映射规则筛选器
允许您明确包含返回true
的行。这与表筛选器 不同,后者基于 SQL 查询进行筛选,并应用于特定表的所有行。映射规则筛选器仅应用于特定映射。
在 映射 选项卡上,点击 高级设置 旁边的 图标。
选择 添加映射规则筛选器 图标。
在 值表达式 文本框中输入有效的 JavaScript 筛选器表达式。
(可选)配置数组条件
允许您对嵌入的数组进行排序并限制数组中的条目数量。您可以选择仅排序、仅限制或两者都选择。当限制为单个条目时,可以选择通过选择 创建原始值数组 将其嵌入为文档而不是单个元素的数组。
在 映射 选项卡上,点击 高级设置 旁边的 图标。
选择 添加数组条件 图标。
在 值表达式 文本框中输入筛选器。
在 排序方式和顺序 标题下,选择要排序的源字段并在之间切换以选择升序和
以选择降序。
选择一个 限制 选项
限制行数:输入数组返回的最大元素数量。默认值为
10
。
注意
排除的字段无法进行排序。如果先前选择的排序字段在后续时间被排除,则移除数组条件。
如果在持续作业的CDC阶段修改了数组,则排序和限制只考虑新修改的行和现有的数组元素,不考虑不在数组中的表中的其他值。
示例
本节展示了嵌入式数组映射规则的关系输入和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 } ] }