SODA for In-Database JavaScriptによるドキュメントの作成

SODA for In-Database JavaScriptによるドキュメントの作成について説明します。

SodaDocumentクラスはSODAドキュメントを表します。JSONドキュメントが中心ですが、他のコンテンツ・タイプもサポートされています。SodaDocumentには、実際のドキュメントのコンテンツとメタデータの両方が格納されます。

設計上、JavaScriptは特にJSONとの連携に適しているため、これが他のプログラミング言語よりも優位になっています。

次に、単純なJSONドキュメントの例を示します。

// Create a JSON document (based on the HR.EMPLOYEES table for employee 100)
const doc = {
    "_id": 100,
    "job_id": "AD_PRES",
    "last_name": "King",
    "first_name": "Steven",
    "email": "SKING",
    "manager_id": null,
    "department_id": 90
};

ノート:

SODAでは、JSONコンテンツがRFC 4627に準拠する必要があります。

SodaDocumentオブジェクトは、次の3つの方法で作成できます:

  • sodaDatabase.createDocument()の結果として。これは、SODAの挿入および置換メソッドに使用できる元のSodaDocumentオブジェクトです。SodaDocumentには、コンテンツおよびメディア・タイプのコンポーネントが設定されます。
  • sodaOperation.getOne()のコールなどのデータベースからの読取り操作、またはsodaOperation.getCursor()コール後のsodaDocumentCursor.getNext()からの読取り操作の結果として。これらは、ドキュメントのコンテンツおよび属性(メディア・タイプなど)を含む完全なSodaDocumentオブジェクトを戻します。
  • sodaCollection.insertOneAndGet()sodaOperation.replaceOneAndGet()またはsodaCollection.insertManyAndGet()メソッドの結果として。これらは、ドキュメント・コンテンツ自体を除くすべての属性を含むSodaDocumentsを戻します。システム生成キーなどのドキュメント属性や、新規および更新されたバージョンのドキュメントを検索する場合に便利です。

ドキュメントには次のコンポーネントがあります。

  • キー

  • コンテンツ

  • バージョン

  • メディア・タイプ(JSONドキュメントの場合、"application/json")

ドキュメントのコンテンツは、アプリケーションが格納する必要がある情報を表すすべてのフィールドと_idフィールドで構成されます。このフィールドは、ユーザーが指定するか、省略した場合はOracleによって挿入されます。省略すると、Oracleは長さが12バイトのランダムな値を追加します。

ドキュメントのキーは、ドキュメントの_id列の16進エンコード表現です。これは自動的に計算され、変更できません。このキーは、key()およびkeys(...)メソッドを使用して、検索、置換および削除などの操作を構築する場合によく使用されます。これらの操作については、後の項で説明します。

例8-6 SODAドキュメントの作成

export function createJSONDoc() {
    
  // 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 a SODA document.
  // Notice that neither key nor version are populated. They will be as soon
  // as the document is inserted into a collection and retrieved.
  const doc = soda.createDocument(payload);
  console.log(`
    ------------------------------------------
    SODA Document using default key
    content (select fields):
    - _id          ${doc.getContent()._id}
    - job_id       ${doc.getContent().job_id}
    - first name   ${doc.getContent().first_name}
    media type:    ${doc.mediaType}
    version   :    ${doc.version}
    key            ${doc.key}`
  );
}

この例にあるようなSodaDocumentインスタンスの作成は、標準ではなく例外です。ほとんどの場合、開発者はSodaCollection.insertOne()またはSodaCollection.insertOneAndGet()を使用します。SodaCollection.insertOne()の使用は、例8-7に示されています。sodaCollection.insertMany()を使用して複数のドキュメントを作成できます。