KLRICE@orcl >soda SODA ------ SODA allows schemaless application development using the JSON data model. SODA createCreate a new collection SODA list List all the collections SODA get <collection_name> [-all | -f | -k | -klist] [{<key> | <k1> <k2> ... > | <qbe>}] List documents the collection Optional arguments: -all list the keys of all docs in the collection -k list docs matching the specific -klist list docs matching the list of keys -f list docs matching the SODA insert <collection_name> <json_str filename=""> Insert a new document within a collection SODA drop <collection_name> Delete existing collection SODA count <collection_name> [<qbe>] Count # of docs inside collection. Optional <qbe> returns # of matching docs SODA replace <collection_name> <oldkey> <new_ doc="" str=""> Replace one doc for another SODA remove <collection_name> [-k | -klist |-f] {<key> | <k1> <k2> ... | <qbe>} Remove doc(s) from collection Optional arguments: -k remove doc in collection matching the specific <key> -klist remove doc in collection matching the list <key1> <key2> ... > -f remove doc in collection matching <qbe> KLRICE@orcl > 
There's a lot in there for command so give them a try. SODA is underpinned but tables with JSON data in them. It's very easy to get going testing out the SODA features. Here's a simple collection create, insert, and query.
KLRICE@orcl >soda create ODTUG
Successfully created collection: ODTUG
KLRICE@orcl >soda insert ODTUG {"content":"awesome"}
Json String inserted successfully.
KLRICE@orcl >soda insert ODTUG {"location":"chicago"}
Json String inserted successfully.
KLRICE@orcl >soda insert ODTUG {"best_of_week":"DB Symposium"}
Json String inserted successfully.
KLRICE@orcl >soda get ODTUG -f {"content":{"$startsWith":"a"}}
Key:      7A01B31EBD7C484C88F431B8871DD165
Content:  {"content":"awesome"}
-----------------------------------------
 1 row selected. 
JavaScript and SODA
Here's a quick example of using the SODA libraries from javascript. Also in here is a new feature of scripting. The javascript can be inlined into a sql script. Notice that it's soda.sql <<< .sql that has javascript in it, let that sink in for a minute with the possibilities.KLRICE@orcl >@soda.sql
Caffeinated SODA 
Dropping the old
Created the old
Inserted Document
Searching...
CBFE3D919E814094954BB217A2F6916E
{ "name" : "Alex", "friends" : "50" }
KLRICE@orcl >!cat soda.sql
script
ctx.write('Caffeinated SODA \n');
var OracleRDBMSClient = Java.type("oracle.soda.rdbms.OracleRDBMSClient");
var OracleDataSource = Java.type('oracle.jdbc.pool.OracleDataSource');
var cl = new OracleRDBMSClient();
var db = cl.getDatabase(conn);
ctx.write("Dropping the old\n")
var foo = db.admin().createCollection("foo");
 foo.admin().drop();
ctx.write("Created the old\n")
    foo = db.admin().createCollection("foo"); 
var doc = db.createDocumentFromString("{ \"name\" : \"Alex\", \"friends\" : \"50\" }");
ctx.write("Inserted Document\n")
 foo.insertAndGet(doc);
conn.commit();
var f = db.createDocumentFromString(JSON.stringify( {"name" : { "$startsWith" : "A" }}));
ctx.write("Searching...\n")
var c = foo.find().filter(f).getCursor();
while (c.hasNext()) {
 cDoc = c.next();
 ctx.write(cDoc.getKey() + "\n");
 ctx.write(cDoc.getContentAsString());
 ctx.write("\n\n"); 
}
ctx.write("\n\n");
/
KLRICE@orcl>









































