7.3 コレクション内のドキュメントの問合せについて
フィルタ仕様または例による問合せ(QBE)を使用して、コレクション内の1つ以上のドキュメントを検索できます。
QBEは、JSONで表されるパターンです。コレクションから、コンテンツが一致するJSONドキュメントを選択するために使用します。つまり、パターンで表される条件が、それらのドキュメントのみのコンテンツに対してtrueと評価される場合です。QBEおよびその使用方法の詳細は、Oracle Database Simple Oracle Document Access (SODA)の概要のSODA QBEの概要を参照してください。
特定のコレクションの場合は、JSONエディタでQBE文字列を入力します。たとえば、名前がMaryのドキュメントを選択するには、図7-2に示すように、{"name":"Mary"}と入力し、「問合せの実行」をクリックします。右下のペインに問合せの結果が表示されます。
エディタには、コマンド・パレットから使用できるコマンドの包括的なリストが用意されています。コマンド・パレットを開くには、[Ctrl]+[Shift]+[P]を押します。キーボード・ショートカット・キーのリストは、キーボード・ショートカットを参照してください。
問合せのエラーは、左余白の赤い点と、特定のテキストの下にある四角形の線で示されます。カーソルを置くと、エラーを解決するための可能な修正がポップアップで表示されます。
ヘッダーの右上のユーザー・ドロップダウン・リストの「プリファレンス」オプションを使用して、エディタ・プリファレンスを設定できます。使用可能なオプションには、テーマ(明るい、暗い、高コントラストの暗い)、フォント・サイズおよびファミリ、タブ・サイズ、ワードラップ、ルーラー、行番号などがあります。
エディタの上には次のアイコンがあります。
-
JSONデータのフォーマット
: QBE文字列のインデントおよび改行を有効にします。
-
句の追加: QBE文字列に$orderbyまたは$patch句の書式設定されたテンプレートを追加します。
-
クリア
: 現行のQBE文字列をクリアします。
-
履歴
: 前のQBE検索文字列を取得します。
QBE式は有効なJSONオブジェクトである必要があり、$queryおよび$orderbyまたは$patch句を含めることができます。QBE式は、句が定義されていない場合、$query句として扱われます。$query句で開始し、後で句の追加リストを使用して$orderbyまたは$patch句を追加します。コンテンツが変換され、$orderbyおよび$patch句のテンプレートが提供されます。テンプレートに正しい値を設定する必要があります。JSONエディタでのコンテキスト内オートコンプリート機能の使用を参照してください。
たとえば、次のような単純なフィルタ問合せがあります。

図plain_query.pngの説明
「句の追加」を使用して$orderby句を追加すると、次のエントリが表示されます。

図orderby_clause.pngの説明
$patch句を追加すると、問合せは次のように変更されます。

図patch_clause.pngの説明
7.3.1 JSONエディタでのコンテキスト内オートコンプリート機能の使用
[Ctrl]+[Space]を押すと、エディタにコンテキスト対応のオプションのリストが表示されます。このリストから、挿入ポイントでオプションを選択して自動補完できます。
次のタイプの情報がリストに表示されます。
-
比較句のフィルタ
テンプレートは各条項に使用可能で、カーソル位置に挿入されます。たとえば、オートコンプリート・リストから
$between
句を選択すると、エディタに次のエントリが表示されます。ここで、
age
はプロパティ名、49
および70
は値です。これらは編集可能なパラメータで、強調表示されています。プロパティ名は、入力するか、オートコンプリートのヘルプを使用して編集できます。[Tab]キーを押して、次のパラメータに移動します。 -
コレクション内のJSONドキュメントのプロパティ名
JSONドキュメントのプロパティ名には、次の2つのソースがあります。
-
データ・ガイドをサポートする検索索引が作成されている場合は、データベース・ディクショナリのJSONデータ・ガイドでプロパティ名がスキャンされます。
-
表示または編集されたドキュメントから収集されたプロパティ名が表示されます。プロパティ名はネームスペース全体のサブセットである可能性があります。
プロパティのタイプに基づいて、関連するテンプレートが挿入され、カーソルが挿入対象の場所に置かれます。次に、プロパティ・タイプ、そのテンプレートおよびそれぞれに対応するカーソル位置のリストを示します。
-
Object
"ShippingInstructions.Address": { <cursor_here> }
-
Array
"LineItems": [<cursor_here>]
-
String
"LineItems[*].Part.Description": "<cursor_here>]"
-
Number
"PONumber": 0
-
Boolean
"site_admin": true
カーソルが二重引用符("")で囲まれていて、オートコンプリートがアクティブ化されている場合、テンプレートまたは追加の二重引用符なしでプロパティ名のみが挿入されます。
-