Creating Documents with SODA for In-Database JavaScript
Creation of documents by SODA for In-Database JavaScript is described.
The SodaDocument
class represents SODA documents. Although its focus
is on JSON documents, it supports other content types as well. A
SodaDocument
stores both the actual document's contents as well as
metadata.
JavaScript is especially well-suited to work with JSON by design, giving it an edge over other programming languages.
Here is an example of a simple JSON document:
// 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
};
Note:
In SODA, JSON content must conform to RFC 4627.
SodaDocument
objects can be created in three ways:
- As a result of
sodaDatabase.createDocument()
. This is a proto-SodaDocument
object usable for SODA insert and replace methods. TheSodaDocument
will have content and media type components set. - As a result of a read operation from the database, such as calling
sodaOperation.getOne()
, or fromsodaDocumentCursor.getNext()
after asodaOperation.getCursor()
call. These return completeSodaDocument
objects containing the document content and attributes, such as media type. - As a result of
sodaCollection.insertOneAndGet()
,sodaOperation.replaceOneAndGet()
, orsodaCollection.insertManyAndGet()
methods. These returnSodaDocuments
that contain all attributes except the document content itself. They are useful for finding document attributes such as system generated keys, and versions of new and updated documents.
A document has these components:
-
Key
-
Content
-
Version
-
Media type (
"application/json"
for JSON documents)
The document's content consists of all the fields representing the information the
application needs to store plus an _id
field. This field is either
provided by the user or injected by Oracle if omitted. If omitted, Oracle adds a
random value with a length of 12 bytes.
The document's key is a hex-encoded representation of the document's
_id
column. It is automatically calculated and cannot be
changed. The key is often used when building operations such as finds, replaces, and
removes, with key()
and keys(...)
methods. These
operations are discussed in later sections.
Example 8-6 Creating SODA Documents
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}`
);
}
Creating SodaDocument
instances as shown in this example is
the exception rather than the norm. In most cases, developers use
SodaCollection.insertOne()
or
SodaCollection.insertOneAndGet()
. The use of
SodaCollection.insertOne()
is demonstrated in Example 8-7. Multiple documents can be created using
sodaCollection.insertMany()
.
Parent topic: Using SODA for In-Database JavaScript