Java API for JSON の主な概念
JSONは、 JavaScript Object Notationの略で、 JavaScript のオブジェクトリテラル記法をベースにした軽量なデータ交換フォーマットです。 JSON は、プログラミング言語に依存しないものの、さまざまな言語の規則を使用する。 Java™ APIは、 MongoDB クエリ言語から派生したJSON指向のクエリ言語をサポートしています。 
JSONデータストアとは、JSON形式のデータを保存、処理、管理する機能を提供するデータベースです。 Db2 のJSON機能により、 Db2 データベースをJSONデータストアとして使用できるようになります。 データストア内のJSONドキュメントは、拡張BSONというバイナリ形式で保存されます。
JSON ネーム・スペース
各 JSON データ・ストアでは、複数の JSON 名前空間をサポートできます。 JSON 名前空間は、概念的には MongoDB データベースと同様であり、SQL スキーマとして表されます。 名前空間は、デフォルトでは、大/小文字の区別はありません。
コマンド行インターフェースでは、ネーム・スペースは use コマンドで設定され、コマンド接頭部 db で参照されます。
nosql>use media
Switched to schema MEDIA
nosql>db.getCollectionNames()
[movies, books, audio]JSON コレクション
JSON コレクションは、JSON ドキュメントの名前付きグループです。 コレクション内のドキュメント構造は、それぞれ大幅に異なる場合があります。 しかし、コレクション内のドキュメントは、通常、性質が類似しているため、データの検索およびグループ化が可能になります。
コレクションは、カスタム定義または自動的に生成された固有 ID と、半構造ドキュメント・コンテンツを保持するバイナリー・ラージ・オブジェクトとともに、 Db2 テーブルに表示されます。 コレクションは、createCollection() コマンドを使用して明示的に作成できます。 コレクションは、以前には存在しなかったコレクションに対して挿入が試行されると、暗黙的に作成されます。
主キーとなるドキュメント ID は、コレクション内のすべてのドキュメントについて同じデータ・タイプでなければなりません。
JSON ドキュメント
JSON ドキュメントは、名前と値の組のオブジェクトであるフィールドから構成されます。 フィールドは任意の順序にすることも、ネストすることも、配列に配置することもできます。
ドキュメント構造に制約はありません。 したがって、同じコレクション内の他のドキュメントが、フィールドのサブセット、追加のフィールド、または同じフィールドの異なる表現を持つ可能性があります。
| データ・タイプ | JSON フォーマットでの例 |
|---|---|
| java.lang.String | "文字列" |
| java.lang.Integer | 3 |
| java.lang.Long | 4294967296 |
| java.lang.Double | 6.2 |
| java.lang.Byte [] | true / false |
| java.util.Date (millisecond precision, in UTC) | { "$binary": "(base64-encoded value)", "$type": "0" } |
| java.util.regex.Pattern | { "$date" : "1998-03-11T17:14:12.456Z" } |
| java.util.regex.Pattern | { "$regex" : "ab*" , "$options" : "" } |
| java.util.UUID | { "$uuid" : "fb46f9a6-13df-41a2-a4e3-c77e85e747dd" } |
| com.ibm.nosql.bson.types.ObjectId | { "$oid" : "51d2f200eefac17ea91d6831" } |
| com.ibm.nosql.bson.types.Code | { "$code" : "mycode" } |
| com.ibm.nosql.bson.types.CodeWScope | { "$code" : "i=i+1", "$scope" : {} } |
| com.ibm.nosql.json.api.BasicDBObject | { "a" : 1, "b": { "c" : 2 } } |
| com.ibm.nosql.json.api.BasicDBList | [1 , 2, "3", "abc", 5] |
Date 文字列値の場合、クライアントは値をUTCに変換して Db2 データベースに保存します。 これは、UTC フォーマットの Date としても取得されます。
以下の例に、サンプル JSON ドキュメントを示します。
{
name:"Joe",
age:25,
phone:["555-666-7777", "444-789-1234"],
homeAddress:
{street:"Sycamore Avenue",
city: “Gilroy”,
zipcode:"95046"
}
businessAddress:
{
street:"Bailey Avenue",
City: “San Jose”,
zipcode:"95141"
}
}
JSON のネストされたオブジェクト
JSON オブジェクトを他の JSON オブジェクトの内部にネストすることができます。 ネストされたオブジェクトには、それぞれ固有のアクセス・パスが必要です。
同じドキュメント内のネストされたオブジェクト内には、同じフィールド名が出現する可能性があります。 ただし、フルアクセス名は固有にする必要があります。
ネストされたフィールドにアクセスするには、ピリオドで区切られたフィールド名を連結します。 (ドット)。 例えば、以下のドキュメントの作成者の姓にアクセスするには、次のように author.lastname を使用します。
{"isbn": "123-456-222",
"author":
{
"lastname": "Doe",
"firstname": "Jane"
},
"editor":
{
"lastname": "Smith",
"firstname": "Jane"
},
"title": "The Ultimate Database Study Guide",
"category": ["Non-Fiction", "Technology"]
}
この例では、フィールド名 lastname が author および editor オブジェクトに出現します。 author.lastname および editor.lastname 内の接頭部によって、固有のアクセスが可能になります。