計算フィールドの追加
項目一覧
計算フィールドを使用すると、 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