文档菜单
文档首页
/
关系迁移器
/ / /

添加计算字段

本页内容

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

计算字段允许您通过使用JavaScript表达式结合现有数据库列的值来在文档中创建新字段。计算字段在迁移作业处理每行时都会进行评估。

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

有关创建映射规则的详细信息,请参阅以下页面

  • 从建议映射创建规则

  • 创建MongoDB规则

  • 从关系创建规则

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

在定义计算字段自定义ID字段时,关系迁移器显示的初始数据类型为默认。当您运行迁移作业时,关系迁移器将更新此数据类型。

  1. 映射界面,点击架构模型窗格或图视图中的表或集合名称。

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

  3. 单击所有字段标签右侧的+图标。

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

  5. 值表达式文本框中定义一个新的字段的有效JavaScript表达式。

  6. 点击完成

  7. 点击保存并关闭

您的下一个迁移任务运行后,新字段将在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。

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

表达式

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

输入

fullName
John Smith

输出

true

对列值执行数学运算。

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

表达式

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

输入

coll1
3
coll2
2

输出

6

基于逻辑条件分配列值。

以下示例:如果 col1 的值为 3,则返回 yes;如果 col1 的值不是 3,则返回 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

返回

计算字段