Documentos incorporados
Nesta página
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.
Sobre esta tarefa
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.
Passos
(Opcional) Configurar várias chaves estrangeiras
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.
Selecione o nome da chave externa a ser incorporada no menu suspenso Foreign key link .
(Opcional) Configurar filtros de regra de mapeamento
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.
No painel Mappings , clique em ícone ao lado de Advanced settings.
Selecione o Add mapping rule filter ícone.
Insira uma expressão de filtro JavaScript válida na caixa de texto Value expression .
Configurar campos
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 .
Exemplos
Esta seção demonstra a entrada relacional e a saída MongoDB da regra de mapeamento Embedded Documents .
Documentos incorporados
Neste exemplo:
Uma regra de mapeamento Embedded Documents é aplicada à tabela
Order
.A tabela
OrderLine
tem duas linhas e a tabelaOrder
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, }, }
Mesclar campos no pai
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, }