SODA for In-Database JavaScriptによるコレクションへのドキュメントの挿入

SodaCollection.insertOne()または関連コール(sodaCollection.insertOneAndGet()など)を使用すると、ドキュメントをコレクションに追加できます。そのコレクションがクライアント割当てキーで構成されており入力ドキュメントでそのキーが指定されている場合(これは、ほとんどのユーザーにはお薦めしません)を除き、これらのメソッドでは、ドキュメント・キーが自動的に作成されます。

SodaCollection.insertOne()は単にドキュメントをコレクションに挿入しますが、SodaCollection.insertOneAndGet()はさらに結果ドキュメントを戻します。結果ドキュメントには、ドキュメント・キーおよびその他の生成されたドキュメント・コンポーネントが含まれます。ただし、実際のドキュメントのコンテンツは除きます(これはパフォーマンス向上のために行われます)。

コレクションがカスタム・メタデータで作成されていないかぎり、どちらの方法でもドキュメントのバージョンが自動的に設定されます。カスタム・メタデータには、一部のデフォルト・メタデータが含まれていない場合があります。コレクションで定義されていない属性を問い合せると、NULL値が戻されます。

ノート:

例外を発生させるのではなく、入力ドキュメントで既存のドキュメントを置き換える場合は、「SODA for In-Database JavaScriptによるコレクションへのドキュメントの保存」を参照してください。

例8-7 コレクションへのSODAドキュメントの挿入

この例では、SodaCollection.insertOne()を使用してコレクションにドキュメントを挿入する方法を示します。

export function insertOneExample() {

  // define the document's contents
  const payload = {
    "_id": 100,
    "job_id": "AD_PRES",
    "last_name": "King",
    "first_name": "Steven",
    "email": "SKING",
    "manager_id": null,
    "department_id": 90
  };

  // create or open the collection to hold the document
  const col = soda.createCollection("MyCollection");

  col.insertOne(payload);
}

例8-8 コレクションへのドキュメントの配列の挿入

この例では、SodaCollection.insertMany()を使用して、1つのコマンドで複数のドキュメントを挿入する方法を示します。この例では、基本的にリレーショナル表HR.employeesをコレクションに変換します。

export function insertManyExample() {

  // select all records from the hr.employees table into an array
  // of JavaScript objects in preparation of a call to insertMany
  const result = session.execute(
    `SELECT
       employee_id "_id",
       first_name "firstName",
       last_name "lastName",
       email "email",
       phone_number "phoneNumber",
       hire_date "hireDate",
       job_id "jobId",
       salary "salary",
       commission_pct "commissionPct",
       manager_id "managerId",
       department_id "departmentId"
     FROM
       hr.employees`,
     [],
     { outFormat: oracledb.OUT_FORMAT_OBJECT }
  );

  // create the collection and insert all employee records
  collection = soda.createCollection('employeesCollection');
  collection.insertMany(result.rows);

  // the MLE JavaScript SQL driver does not auto-commit
  session.commit();
}