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()を使用して複数のドキュメントを作成できます。