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

嵌套文档

本页内容

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

使用嵌套文档映射规则以降级外键关系。使用嵌套文档,您可以在父集合中嵌套子外键字段。

使用嵌套文档选项降级关系型数据时,您有两个主要选项

  • 您可以将子文档嵌入到父文档中,并指定一个前缀字段名

  • 您可以合并到父级,这表示将行作为父级的字段。

嵌套文档映射规则是一个高级映射规则选项。它必须显式添加到映射模型中。

  • 如果映射的关联表在外键关系的一侧,则可用嵌入式文档映射规则。

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

1
  1. 在左侧的架构模型面板中,点击MongoDB关系型标题下的一个集合。

    这将在屏幕右侧打开映射面板。

2
  1. 映射屏幕,点击+ 添加来创建一个新的映射规则,或点击图标来编辑现有规则。

  2. 迁移为下选择嵌入式文档

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

  2. 配置根路径

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

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

4

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

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

5
  1. 通过点击字段名旁边的图标,将表行合并为父集合级别的字段。

6

允许您显式包含返回值的行true。这与表过滤器不同,后者根据SQL查询进行过滤,并应用于特定表的全部行。映射规则过滤器仅适用于特定的映射。

  1. 映射面板上,点击高级设置旁边的图标。

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

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

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

    • 更改集合名称。

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

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

    • 更改字段名称。

    • 通过点击字段名称旁边的图标来包含或排除字段。

8
  1. 点击 保存并关闭

本节演示了嵌入式文档映射规则的关联输入和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,
}

返回

嵌套数组