Use la regla de mapeo Embedded array para insertar los valores de la tabla secundaria como elementos de arreglo en los documentos de la colección mapeada a la tabla principal. La regla de mapeo Embedded array es una opción avanzada de regla de mapeo. Debe agregarse explícitamente a un modelo de mapeo.
Acerca de esta tarea
La regla de mapeo Embedded array está disponible si la tabla relacional de la que se está mapeando está en el lado multiple de la relación de clave externa.
La tabla que contiene la clave primaria también debe asignarse a una colección en el modelo de MongoDB.
Pasos
(Opcional) Configurar varias claves externas
Te permite seleccionar cuál clave externa incrustar cuando hay más de una clave externa entre dos tablas. Esta opción solo aparece para tablas o colecciones con múltiples enlaces de clave externa.
Seleccione el nombre de la clave externa para incrustar desde el menú desplegable Foreign key link.
(Opcional) Configurar filtros de reglas de mapeo
Permite incluir explícitamente las filas en las que una expresión devuelve true. Esto difiere de los Filtros de tabla, que filtran según una query SQL, y se aplican a todas las filas de una tabla en concreto. Los filtros de reglas de asignación solo se aplican a una asignación específica.
En el panel Mappings, haz clic en el ícono junto a Advanced settings.
Seleccione el icono Add mapping rule filter .
Introduce una expresión de filtro JavaScript válida en el cuadro de texto Value expression.
(Opcional) Configure las condiciones del arreglo
Te permite ordenar un arreglo incrustado y limitar la cantidad de entradas en ese arreglo. Solo puedes aplicar un orden, solo un límite o ambos. Al limitarse a una sola entrada, existe la opción de integrar como documento en lugar de un arreglo de un solo elemento seleccionando el Create an array of primitive values .
En el panel Mappings, haz clic en el ícono junto a Advanced settings.
Seleccione el icono Add array conditions .
Ingrese un filtro en el cuadro de texto Value expression.
En el Sort by and order encabezado, selecciona el campo de origen para ordenar y alterna entre para orden ascendente y para descendente.
Selecciona una opción de Limit:
No limit: No limit
Limit number of rows: Introduce el número máximo de elementos devueltos en el arreglo. El valor por defecto es
10.
Nota
- No se pueden ordenar los campos excluidos. Si un campo de ordenamiento previamente seleccionado se excluye en un momento posterior, se elimina la condición de arreglos.
Configurar campos
Defina las opciones para la nueva regla de mapeo. Al definir las opciones de la regla de mapeo, puedes:
Cambia el nombre de la colección.
Para cambiar el nombre de la colección, haz clic en el cuadro de texto Name e introduce el nuevo nombre. Haz clic fuera del cuadro de texto para guardar el cambio. Si el nombre ya está en uso, recibirás un error de validación.
Añadir Campos Calculados para crear nuevos campos basados en columnas fuente relacionales. Consulta Campos calculados para obtener más información.
Cambiar los nombres de los campos.
Incluir o excluir un campo de tu tarea de migración haciendo clic en el icono junto al nombre del campo.
Ejemplo
Esta sección demuestra la entrada relacional y el resultado de MongoDB de la regla de mapeo Embedded array.
Arreglo incrustado
En este ejemplo:
Se aplica una regla de mapeo Embedded Array a la tabla Customer.
Source table está configurado en Order.
Prefix está configurado en (root).
Field Name está configurado en orders.
Haga clic en las pestañas de abajo para ver la entrada y la salida de este ejemplo:
Customer tabla:
ID | Nombre | Dirección1 | Dirección2 | Dirección3 |
|---|---|---|---|---|
1 | Joelynn Fawthrop | 86 Dwight Pass | Carregal | 3800-854 |
Orders tabla:
OrderID | CustomerID | MontoTotal | OrderStatusID |
|---|---|---|---|
1 | 1 | 50.00 | 1 |
4 | 1 | 500.00 | 3 |
El documento en la Customer colección ahora tiene los detalles Order incrustados como un campo de arreglo de objetos llamado Orders.
Todos los pedidos de los clientes ahora son visibles en la Customer colección como un arreglo de documentos anidados.
{ "_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 } ] }