嵌入式数组
使用 Embedded array映射规则将子表的值作为大量元素插入映射到父表的集合中的文档下。 Embedded array映射规则是高级映射规则选项。 必须将其显式添加到映射模型中。
关于此任务
如果Embedded array映射规则所映射的关系表位于外键关系的多方,则该规则可用。
包含主键的表还必须映射到 MongoDB 模型中的集合。
步骤
(可选)配置映射规则筛选器
允许您显式包含表达式返回 true
的行。 这与表筛选器不同,后者根据SQL查询进行过滤,并应用特定表中的所有行。 映射规则筛选器仅应用于特定映射。
在Mappings窗格中,单击Advanced settings旁边的图标。
选择Add mapping rule filter图标。
在Value expression文本框中输入有效的JavaScript过滤表达式。
(可选)配置大量条件
允许您对嵌入式大量进行排序并限制该大量中的条目数量。 您可以仅应用排序、仅应用限制或同时应用两者。 限制为单个条目时,可以选择嵌入为文档而不是单元素大量,方法是选择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 阶段修改了大量,则排序和限制仅考虑新修改的行和预先存在的大量元素,而不考虑表中不在大量中的其他值。
例子
本部分演示了Embedded array映射规则的关系输入和 MongoDB 输出。
嵌入式数组
在本例中:
Embedded Array映射规则应用于Customer表。
将Source table设置为Order 。
将Prefix设置为(root) 。
将Field Name设置为orders 。
单击下面的标签页可查看此示例的输入和输出:
Customer
表:
id | 名称 | Address1 | Address2 | Address3 |
---|---|---|---|---|
1 | 乔林·福斯罗普 | 86 德怀特·帕斯 | 卡雷加尔 | 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 } ] }