Uso el Embedded array Regla de mapeo para insertar los valores de la tabla secundaria como elementos de matriz en los documentos de la colección mapeada a la tabla principal. La regla de mapeo Embedded array es una opción avanzada. Debe añadirse explícitamente a un modelo de mapeo.
Acerca de esta tarea
La regla de mapeo Embedded array está disponible si la tabla relacional desde la cual se está mapeando está en el lado múltiple de la relación de clave externa.
La tabla que contiene la clave principal también debe asignarse a una colección en el modelo MongoDB.
Pasos
(Opcional) Configurar múltiples claves externas
Permite seleccionar la clave externa que se incrustará cuando exista 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 que desea incrustar en el menú desplegable Foreign key link.
(Opcional) Configurar filtros de reglas de mapeo
Le permite incluir explícitamente filas donde una expresión retorna
trueEsto difiere de Filtros de tabla: filtran según una consulta SQL y se aplican a todas las filas de una tabla específica. Los filtros de reglas de mapeo solo se aplican a un mapeo específico.
En el Mappings panel, haga clic en el icono junto Advanced settings a.
Seleccione el icono.Add mapping rule filter
Introduzca una expresión de filtro de JavaScript válida en el cuadro de texto Value expression.
(Opcional) Configurar las condiciones de la matriz
Permite ordenar una matriz incrustada y limitar su número. Puede aplicar solo una ordenación, solo un límite o ambos. Al limitar a una sola entrada, existe la opción de incrustar como documento en lugar de una matriz de un solo elemento Create an array of primitive values seleccionando.
En el Mappings panel, haga clic en el icono junto Advanced settings a.
Seleccione el icono.Add array conditions
Introduzca un filtro en el cuadro de texto Value expression.
En el encabezado Sort by and order, seleccione el campo de origen para ordenar y alternar entre para orden ascendente y descendente.
Selecciona una opción de Limit:
No limit: No limit
Limit number of rowsIntroduzca el número máximo de elementos que se devolverán en la matriz. El valor predeterminado es
10.
Nota
Los campos excluidos no se pueden ordenar. Si posteriormente se excluye un campo de ordenación previamente seleccionado, se elimina la condición de la matriz.
Configurar campos
Defina las opciones para la nueva regla de mapeo. Al definir las opciones de la regla de mapeo, puede:
Cambiar 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.
Agregue campos calculados para crear nuevos campos basados en columnas de origen relacionales.Consulte Campos calculados para obtener más información.
Cambiar los nombres de los campos.
Incluya o excluya un campo de su trabajo de migración haciendo clic en el ícono junto al nombre del campo.
Ejemplo
Esta sección demuestra la entrada relacional y la salida de MongoDB de la regla de mapeo Embedded array.
Matriz incrustada
En este ejemplo:
Se aplica una regla de mapeo Embedded Array a la tabla Customer.
El Source table se establece en Order.
El Prefix se establece en (root).
El Field Name se establece en orders.
Haga clic en las pestañas a continuación para ver la entrada y la salida de este ejemplo:
Customer mesa:
ID | Nombre | Dirección1 | Dirección2 | Dirección3 |
|---|---|---|---|---|
1 | Joelynn Fawthrop | 86 Paso Dwight | Carregal | 3800-854 |
Orders mesa:
ID de pedido | ID de cliente | Monto total | OrderStatusID |
|---|---|---|---|
1 | 1 | 50.00 | 1 |
4 | 1 | 500.00 | 3 |
El documento de la colección Customer ahora tiene los detalles Order incrustados como un campo de matriz de objetos llamado Orders.
Todos los pedidos de los clientes ahora son visibles en la colección Customer como una matriz 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 } ] }