嵌套文档
使用嵌套文档映射规则以降级外键关系。使用嵌套文档,您可以在父集合中嵌套子外键字段。
使用嵌套文档选项降级关系型数据时,您有两个主要选项
您可以将子文档嵌入到父文档中,并指定一个前缀和字段名。
您可以合并到父级,这表示将行作为父级的字段。
嵌套文档映射规则是一个高级映射规则选项。它必须显式添加到映射模型中。
关于此任务
如果映射的关联表在外键关系的一侧,则可用嵌入式文档映射规则。
包含外键的表也必须映射到MongoDB模型中的集合。
步骤
6
(可选) 配置映射规则过滤器
允许您显式包含返回值的行true
。这与表过滤器不同,后者根据SQL查询进行过滤,并应用于特定表的全部行。映射规则过滤器仅适用于特定的映射。
在映射面板上,点击高级设置旁边的图标。
选择添加映射规则过滤器 图标。
在值表达式文本框中输入有效的JavaScript过滤器表达式。
7
示例
本节演示了嵌入式文档映射规则的关联输入和MongoDB输出。
嵌入式文档
在本例中
将嵌入式文档映射规则应用于
订单
表。订单行
表有两行,而订单
表有一行。父集合设置为订单行。
未选择将字段合并到父级。
将字段名称设置为order。
点击下面的标签以查看此示例的输入和输出
订单行
表
订单行ID | 订单ID | 产品ID | 数量 |
---|---|---|---|
1 | 1 | 1 | 1 |
4 | 1 | 3 | 1 |
订单
表
订单ID | 客户ID | 总金额 | 订单状态ID |
---|---|---|---|
1 | 1 | 550.00 | 1 |
订单行
集合中的文档现在嵌入了一个名为Orders
的嵌入式文档,其中包含订单
详情。
{ ObjectID: { OrderLineID: 1, }, OrderID: 1, ProductID: 1, Quantity: 1, Orders: { OrderID: 1, CustomerID: 1, TotalAmount: 550, OrderStatusID: 1, }, }, { ObjectID: { OrderLineID: 4, }, OrderID: 1, ProductID: 3, Quantity: 1, Orders: { OrderID: 1, CustomerID: 1, TotalAmount: 550, OrderStatusID: 1, }, }
将字段合并到父级
在本例中
OrderLine
表有四行,而 Order 表有三行。将嵌入式文档映射规则应用于
订单
表。父集合设置为订单行。
将字段合并到父级 已选中。
前缀设置为 (root)。
点击下面的标签以查看此示例的输入和输出
订单行
表
订单行ID | 订单ID | 产品ID | 数量 |
---|---|---|---|
1 | 1 | 1 | 1 |
2 | 2 | 2 | 1 |
3 | 3 | 3 | 1 |
4 | 1 | 3 | 1 |
订单
表
订单ID | 客户ID | 总金额 | 订单状态ID |
---|---|---|---|
1 | 1 | 550.00 | 1 |
2 | 2 | 100.00 | 2 |
3 | 3 | 500.00 | 3 |
OrderLine
集合中的文档已将 Order
细节作为字段合并到父文档中。
{ _id: { orderLineId: 1, }, orderId: 1, productId: 1, quantity: 1, customerId: 1, orderStatusId: 1, totalAmount: 550, }, { _id: { orderLineId: 2, }, orderId: 2, productId: 2, quantity: 1, customerId: 2, orderStatusId: 2, totalAmount: 100, }, { _id: { orderLineId: 3, }, orderId: 3, productId: 3, quantity: 1, customerId: 3, orderStatusId: 3, totalAmount: 500, }, { _id: { orderLineId: 4, }, orderId: 1, productId: 3, quantity: 1, customerId: 1, orderStatusId: 1, totalAmount: 550, }