Docs 菜单
Docs 主页
/
Relational Migrator
/ / /

添加计算字段

在此页面上

  • 开始之前
  • 关于此任务
  • 步骤
  • 示例
  • 连接字符串
  • 分割字符串
  • 替换字符串
  • 检查字符串值
  • 执行数学运算
  • 根据逻辑条件赋值
  • 提取 JSON 值
  • 访问数组元素
  • 解析日期
  • 了解详情

计算字段允许您使用JavaScript表达式组合现有数据库列中的值,从而在文档中创建新字段。在迁移作业期间,每次处理行时都会对计算字段进行求值。

要创建计算字段,必须定义映射规则。

要创建映射规则,请参阅以下页面:

  • 根据建议的映射创建规则

  • 为 MongoDB 创建规则

  • 从关系创建规则

计算字段表达式使用语法 columns["<COLUMN_NAME>"]访问当前源数据库行中的值。

定义计算字段和自定义ID字段时, Relational Migrator显示的初始数据类型为default 。当您运行迁移作业时, Relational Migrator会更新此数据类型。

  1. Mapping屏幕中,单击Schema model窗格或图表视图上的表或collection名称。

  2. 添加新的映射规则或编辑现有映射规则。

  3. 单击All fields标签右侧的+图标。

  4. Field Name文本框中定义新字段的名称。

  5. Value expression文本框中为新字段定义有效的 JavaScript 表达式。

  6. 单击 Done(连接)。

  7. 单击 Save and close(连接)。

下一个迁移作业运行后,新字段将在MongoDB中可见。

以下示例显示了可在计算字段中使用的 JavaScript 表达式:

将两列合并为一个字段。

以下示例将连接firstNamelastName列中的字符串值。

表达式:

columns["firstName"] + ' ' + columns["lastName"]

输入:

firstName

John

lastName

Smith

输出:

"John Smith"

根据指定字符将列值分割到数组中。

以下示例使用空格字符作为分隔符将fullName列分割为数组,并返回数组的第一个元素。

表达式:

columns["fullName"].split(' ')[0]

输入:

fullName

John Doe

输出:

"John"

应用正则表达式模式来替换列中的字符串值。

以下示例在fullName列上对字符串smith执行不区分大小写的正则表达式搜索。 如果找到匹配项,该表达式会将匹配的字符串替换为Doe

表达式:

columns["fullName"].replace(/smith/i, "Doe")

输入:

fullName

John Smith

输出:

"John Doe"

根据列是否包含字符串值返回 true 或 false。

如果 列中的值包含字符串 ,以下示例将返回truefullName Smith。如果fullName列不包含字符串Smith ,则表达式返回false

表达式:

columns["fullName"].includes("Smith")

输入:

fullName

John Smith

输出:

true

对列值执行数学运算。

以下示例将col1col2列的值相乘。

表达式:

columns["col1"] * columns["col2"]

输入:

coll1

3

coll2

2

输出:

6

根据逻辑条件分配列值。

如果col1的值为3 ,以下示例将返回yes ;如果col13 no

表达式:

columns["col1"] === 3 ? "yes" : "no"

输入:

coll1

3

输出:

yes

使用计算字段表达式访问存储为 JSON 数据类型的数据。 需要 JSON 数据类型列 (Postgres)。

以下示例根据Employee列中的值返回嵌入式state字段的值。

表达式:

columns["Employee"].Address.state

输入:

{
Employee: {
name: "Mark",
Address: {
state: "California"
}
}
}

输出:

"California"

使用计算字段表达式访问存储为数组数据类型的数据。 需要数组数据类型列(Postgres 或 MySQL)。

以下示例返回myArray列中值的第二个元素。

表达式:

columns["myArray"][1]

输入:

myArray

[ "a", "b", "c" ]

输出:

"b"

将 ISO8601 格式的日期字符串解析为日期。

以下示例将dateAsString列中的字符串值转换为日期。

表达式:

new Date(columns["dateAsString"])

输入:

dateAsString

"2009-02-11"

输出:

2009-02-11T0:00:00Z

后退

计算字段