Menu Docs
Página inicial do Docs
/
Relational Migrator
/ /

Documentos incorporados

Nesta página

  • Sobre esta tarefa
  • Passos
  • Exemplos

Use a regra de mapeamento Embedded Documents para desnormalizar um relacionamento de chave estrangeira. Com Embedded Documents , você pode aninhar campos de chave externa filhos em uma collection pai.

Você tem duas opções principais ao desnormalizar seus dados relacionais com a opção Embedded Documents :

  • Você pode incorporar os documentos filhos no pai e designar um Prefix e Field name.

  • Você pode mesclar no pai, que representa as linhas como campos no nível pai.

A regra de mapeamento do Embedded Documents é uma opção de regra de mapeamento avançada. Deve ser explicitamente adicionado a um modelo de mapeamento.

  • A regra de mapeamento Embedded Documents estará disponível se a tabela relacional da qual ela está mapeando estiver de um lado do relacionamento de chave estrangeira.

  • A tabela que contém a chave estrangeira também deve ser mapeada para uma collection no modelo MongoDB.

1
  1. No painel Schema model esquerdo, clique em uma coleção sob o cabeçalho MongoDB ou Relational .

    Isso solicita que o painel Mappings seja aberto à direita da tela.

2
  1. Na tela Mapping , clique em + Add para criar uma nova regra de mapeamento ou clique em ícone para editar uma regra existente.

  2. Selecione Embedded documents em Migrate table as.

3
  1. Selecione o nome do Source table ou Parent collection no menu suspenso.

  2. Configure o caminho raiz:

    • Prefix: especifica a hierarquia de regras.

    • Field name: especifica o campo contendo a array ou documento incorporado.

4

Permite selecionar em qual chave estrangeira incorporar quando houver mais de uma chave estrangeira entre duas tabelas. Esta opção aparece somente para tabelas ou collections com vários links de chave estrangeira.

  1. Selecione o nome da chave externa a ser incorporada no menu suspenso Foreign key link .

5
  1. Mescle linhas de tabela como campos no nível da collection principal clicando em ícone ao lado do nome do campo .

6

Permite incluir explicitamente linhas onde uma expressão retorna true. Isso difere dos filtros de tabela, que filtram com base em uma query SQL e se aplicam a todas as linhas de uma tabela específica. Os filtros de regra de mapeamento se aplicam somente a um mapeamento específico.

  1. No painel Mappings , clique em ícone ao lado de Advanced settings.

  2. Selecione o Add mapping rule filter ícone.

  3. Insira uma expressão de filtro JavaScript válida na caixa de texto Value expression .

7
  1. Defina as opções para a nova regra de mapeamento. Ao definir as opções de regra de mapeamento, você pode:

    • Altere o nome da coleção.

      Para alterar o nome da coleção, clique na caixa de texto Name e insira o novo nome. Clique fora da caixa de texto para salvar a alteração. Se o nome já estiver em uso, você receberá um erro de validação.

    • Adicionar Campos Calculados para criar novos campos com base em colunas de origem relacional. Consulte Campos calculados para obter mais informações.

    • Alterar nomes de campos.

    • Inclua ou exclua um campo da sua tarefa de migração clicando no ícone ao lado do nome do campo .

8
  1. Clique em Save And Close.

Esta seção demonstra a entrada relacional e a saída MongoDB da regra de mapeamento Embedded Documents .

Neste exemplo:

  • Uma regra de mapeamento Embedded Documents é aplicada à tabela Order .

  • A tabela OrderLine tem duas linhas e a tabela Order tem uma linha.

  • A collection principal está definida como OrderLine.

  • Merge fields into the parent não está selecionado.

  • O Field name está definido como order.

Clique nas guias abaixo para ver a entrada e saída deste exemplo:

OrderLine tabela:

ID da linha do pedido
ID do pedido
ID do produto
Quantidade

1

1

1

1

4

1

3

1

Order tabela:

ID do pedido
CustomerID
Valor total
Status do pedidoID

1

1

550.00

1

Os documentos na coleção OrderLine agora têm os detalhes Order incorporados como um documento incorporado chamado 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,
},
}

Neste exemplo:

  • A tabela OrderLine tem quatro linhas e a tabela Ordem tem três linhas.

  • Uma regra de mapeamento Embedded Documents é aplicada à tabela Order .

  • A collection principal está definida como OrderLine.

  • Merge fields into the parent está selecionado.

  • O Prefix está definido como (root).

Clique nas guias abaixo para ver a entrada e saída deste exemplo:

OrderLine tabela:

ID da linha do pedido
ID do pedido
ID do produto
Quantidade

1

1

1

1

2

2

2

1

3

3

3

1

4

1

3

1

Order tabela:

ID do pedido
CustomerID
Valor total
Status do pedidoID

1

1

550.00

1

2

2

100.00

2

3

3

500.00

3

Os documentos na coleção OrderLine têm os detalhes Order mesclados ao documento pai como campos.

{
_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,
}

Voltar

Array incorporada