計算フィールドを使用すると、 JavaScript式を使用して既存のデータベース列の値を組み合わせて、ドキュメントに新しいフィールドを作成できます。 計算フィールドは、移行ジョブ中に行が処理されるたびに評価されます。
始める前に
計算フィールドを作成するには、マッピング ルールを定義する必要があります。
マッピング ルールを作成するには、次のページを参照してください。
このタスクについて
計算フィールド式は、構文 columns["<COLUMN_NAME>"]を使用して、現在のソースデータベース行から値にアクセスします。
計算フィールド と カスタマイズIDフィールド を定義する場合、 Relational Migrator はdefault の初期データ型を表示します。移行ジョブ を実行すると、 Relational Migrator はこのデータ型を更新します。
手順
Mapping画面から、 Schema modelペインまたは図ビューでテーブルまたはコレクション名をクリックします。
新しいマッピング ルールを追加するか、既存のマッピング ルールを編集します。
All fieldsラベルの右側にある+アイコンをクリックします。
Field Nameテキスト ボックスに新しいフィールドの名前を定義します。
Value expressionテキスト ボックスの新しいフィールドに有効な JavaScript 式を定義します。[Done] をクリックします。
[Save and close] をクリックします。
次回の移行ジョブの実行後にMongoDBに新しいフィールドが表示されます。
例
次の例は、計算フィールドで使用できる JavaScript 式を示しています。
string の連結
2 つの列を 1 つのフィールドに結合します。
次の例では、 firstName列とlastName列の string 値を連結します。
式:
columns["firstName"] + ' ' + columns["lastName"]
入力:
コラム | 値 |
|---|---|
|
|
|
|
出力:
"John Smith"
String の分割
指定された文字に基づいて列値を配列に分割します。
次の例では、スペース文字を区切り文字として使用してfullName列を配列に分割し、配列の最初の要素を返します。
式:
columns["fullName"].split(' ')[0]
入力:
コラム | 値 |
|---|---|
|
|
出力:
"John"
文字列の置換
正規表現パターンを適用して、列内のstring値を置き換えます。
次の例では、 fullName列で string smithを大文字と小文字を区別せずに正規表現検索します。 一致が見つかった場合、式は一致の string をDoeに置き換えます。
式:
columns["fullName"].replace(/smith/i, "Doe")
入力:
コラム | 値 |
|---|---|
|
|
出力:
"John Doe"
string 値のチェック
列に string 値が含まれているかどうかに基づいて true または false を返します。
The following example returns true if the value in the fullName column includes the string Smith. fullName列に string Smithが含まれていない場合、式はfalseを返します。
式:
columns["fullName"].includes("Smith")
入力:
コラム | 値 |
|---|---|
|
|
出力:
true
数学演算の実行
列値に対して数学演算を実行します。
次の例では、 col1列とcol2列の値を乗算します。
式:
columns["col1"] * columns["col2"]
入力:
コラム | 値 |
|---|---|
|
|
|
|
出力:
6
論理条件に基づいて値を割り当てる
論理条件に基づいて列値を割り当てます。
次の例では、 col1の値が3の場合はyesが返され、 col1が3以外の値の場合はnoが返されます。
式:
columns["col1"] === 3 ? "yes" : "no"
入力:
コラム | 値 |
|---|---|
|
|
出力:
yes
Extract JSON Values
計算されたフィールド式を含む JSON データ型として保存されたデータにアクセスします。 JSON データ型の列(Postgres)が必要です。
次の例では、 Employee列の値から埋め込まれたstateフィールドの値を返します。
式:
columns["Employee"].Address.state
入力:
{ Employee: { name: "Mark", Address: { state: "California" } } }
出力:
"California"
配列要素にアクセスする
計算フィールド式を含む配列データ型として保存されたデータにアクセスします。 配列データ型列(Postgres または MySQL)が必要です。
次の例では、 myArray列の値の 2 番目の要素を返します。
式:
columns["myArray"][1]
入力:
コラム | 値 |
|---|---|
| [ "a", "b", "c" ] |
出力:
"b"
日付の解析
ISO8601 形式の string を日付に解析します。
次の例では、 dateAsString列の string 値を日付に変換しています。
式:
new Date(columns["dateAsString"])
入力:
コラム | 値 |
|---|---|
| "2009-02-11" |
出力:
2009-02-11T0:00:00Z