Array incorporada
Nesta página
Use a regra de mapeamento Embedded array para inserir os valores da tabela filho como elementos de array em documentos na coleção mapeada para a tabela pai. A regra de mapeamento Embedded array é uma opção avançada de regra de mapeamento. Deve ser explicitamente adicionado a um modelo de mapeamento.
Sobre esta tarefa
A regra de mapeamento Embedded array estará disponível se a tabela relacional da qual ela está mapeando estiver no lado de muitos do relacionamento de chave estrangeira.
A tabela que contém a chave primária 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 .
(Opcional) Configurar condições da array
Permite classificar uma array incorporada e limitar a quantidade de entradas nessa array. Você pode aplicar apenas uma classificação, apenas um limite ou ambos. Ao limitar a uma única entrada, há a opção de incorporar como um documento em vez de uma array de elemento único, selecionando o Create an array of primitive values .
No painel Mappings , clique em ícone ao lado de Advanced settings.
Selecione o Add array conditions ícone.
Insira um filtro na caixa de texto Value expression .
No cabeçalho Sort by and order , selecione o campo de origem para classificar e alterne entre para ascendente e para ordem decrescente.
Selecione uma opção Limit :
No limit: No limit
Limit number of rows: Insira o número máximo de elementos retornados na array. O valor padrão é
10
.
Observação
Os campos excluídos não podem ser ordenados. Se um campo de classificação selecionado anteriormente for excluído posteriormente , a condição de array será removida.
Se uma array for modificada durante o estágio CDC de um tarefa contínuo , a classificação e a limitação considerarão apenas a linha recém-modificada e os elementos de array pré-existentes, não os outros valores da tabela que não estão na array.
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 .
Exemplo
Esta seção demonstra a entrada relacional e a saída MongoDB da regra de mapeamento Embedded array .
Array incorporada
Neste exemplo:
Uma regra de mapeamento Embedded Array é aplicada à tabela Customer .
O Source table está definido como Order.
O Prefix está definido como (root).
O Field Name está definido como orders.
Clique nas guias abaixo para ver a entrada e saída deste exemplo:
Customer
tabela:
id | Nome | Endereço1 | Endereço2 | Endereço3 |
---|---|---|---|---|
1 | Joelynn Fawthrop | 86 Dwight Pass | Carregal | 3800-854 |
Orders
tabela:
ID do pedido | CustomerID | Valor total | Status do pedidoID |
---|---|---|---|
1 | 1 | 50.00 | 1 |
4 | 1 | 500.00 | 3 |
O documento na coleção Customer
agora tem os detalhes do Order
incorporados como uma matriz de campo de objetos chamado Orders
.
Todos os pedidos de clientes agora estão visíveis na coleção Customer
como uma array de documentos aninhados.
{ "_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 } ] }