Los campos calculados permiten crear nuevos campos en los documentos combinando valores de columnas de bases de datos existentes mediante expresiones JavaScript. Los campos calculados se evalúan cada vez que se procesa una fila durante una migración.
Antes de comenzar
Para crear un campo calculado, debes definir una regla de asignación.
Para crear reglas de mapeo, consulte las siguientes páginas:
Acerca de esta tarea
Las expresiones de campo calculadas acceden a los valores de la fila de la base de datos de origen actual mediante la sintaxis columns["<COLUMN_NAME>"].
Al definir campos calculados y personalizar campos de identificación, Relational Migrator muestra un tipo de datos inicial de defaultCuando se ejecuta un trabajo de migración, Relational Migrator actualiza este tipo de datos.
Pasos
Desde la pantalla Mapping, haga clic en el nombre de una tabla o colección en el panel Schema model o en la vista de diagrama.
Agregue una nueva regla de mapeo o edite una regla de mapeo existente.
Haz clic en el icono + a la derecha de la etiqueta All fields.
Define un nombre para el nuevo campo en el cuadro de texto Field Name.
Defina una expresión JavaScript válida para el nuevo campo en el cuadro de texto
Value expression.Haga clic en Done.
Haga clic en Save and close.
El nuevo campo será visible en MongoDB después de que se ejecute el próximo trabajo de migración.
Ejemplos
Los siguientes ejemplos muestran expresiones de JavaScript que puedes usar en campos calculados:
Concatenar cadenas
Combine dos columnas en un solo campo.
El siguiente ejemplo concatena valores de cadena de las columnas firstName y lastName.
Expresión:
columns["firstName"] + ' ' + columns["lastName"]
Aporte:
columna | Valor |
|---|---|
|
|
|
|
Salida:
"John Smith"
Cuerdas divididas
Dividir los valores de las columnas en una matriz según un carácter especificado.
El siguiente ejemplo divide la columna fullName en una matriz utilizando un carácter de espacio como delimitador y devuelve el primer elemento de la matriz.
Expresión:
columns["fullName"].split(' ')[0]
Aporte:
columna | Valor |
|---|---|
|
|
Salida:
"John"
Reemplazar cadenas
Aplicar patrones de expresiones regulares para reemplazar valores de cadena en una columna.
El siguiente ejemplo realiza una búsqueda de expresiones regulares sin distinción entre mayúsculas y minúsculas en la columna fullName para la cadena smith. Si se encuentra una coincidencia, la expresión reemplaza la cadena coincidente por Doe.
Expresión:
columns["fullName"].replace(/smith/i, "Doe")
Aporte:
columna | Valor |
|---|---|
|
|
Salida:
"John Doe"
Comprobar valores de String
Devuelve verdadero o falso según si una columna contiene un valor de cadena.
El siguiente ejemplo devuelve true si el valor en la columna fullName incluye la string Smith. Si la columna fullName no incluye la cadena Smith, la expresión devuelve false.
Expresión:
columns["fullName"].includes("Smith")
Aporte:
columna | Valor |
|---|---|
|
|
Salida:
true
Realizar operaciones matemáticas
Realizar operaciones matemáticas sobre valores de columnas.
El siguiente ejemplo multiplica los valores de las columnas col1 y col2.
Expresión:
columns["col1"] * columns["col2"]
Aporte:
columna | Valor |
|---|---|
|
|
|
|
Salida:
6
Asignar valores según condiciones lógicas
Asignar valores de columna según condiciones lógicas.
El siguiente ejemplo devuelve yes si el valor de col1 es 3 y no si col1 es un valor distinto de 3.
Expresión:
columns["col1"] === 3 ? "yes" : "no"
Aporte:
columna | Valor |
|---|---|
|
|
Salida:
yes
Extract JSON Values
Acceda a datos almacenados en formato JSON con expresiones de campo calculadas. Requiere columnas de tipo JSON (Postgres).
El siguiente ejemplo devuelve el valor del campo state incrustado a partir de los valores de la columna Employee.
Expresión:
columns["Employee"].Address.state
Aporte:
{ Employee: { name: "Mark", Address: { state: "California" } } }
Salida:
"California"
Acceso a elementos de matriz
Acceda a datos almacenados como array con expresiones de campos calculados. Requiere columnas de array (Postgres o MySQL).
El siguiente ejemplo devuelve el segundo elemento de los valores en la columna myArray.
Expresión:
columns["myArray"][1]
Aporte:
columna | Valor |
|---|---|
| [ "a", "b", "c" ] |
Salida:
"b"
Analizar fechas
Analizar una cadena de fecha con formato ISO8601en una fecha.
El siguiente ejemplo convierte valores de cadena de la columna dateAsString en fechas.
Expresión:
new Date(columns["dateAsString"])
Aporte:
columna | Valor |
|---|---|
| "2009-02-11" |
Salida:
2009-02-11T0:00:00Z