JSON データ構造は通常オブジェクトと配列を使用するため、 XQuery 3.1 lookup operator ? が (基本的に XQuery パースペクティブからマップする) JSON オブジェクトと JSON 配列内のノードを検索するために使用されます。ノードをロケートするこの方法は XML ドキュメント内でノードをロケートするためにパス式が作成される方法とは異なります。これらの中では、スラッシュ演算子 / がパス式内でステップを接続するために使用されています (例: items/*)。JSON のための式 XQuery 内では、スラッシュ演算子はノードをロケートするために使用されません。
?items?*
意味: 子ノード items をルックアップし、自信の子ノード全てをルックアップします。items はコンテキストノードの子ノードであることが期待されることに注意してください。
?Artists?1?Albums?2?Name
意味: 子ノード Artists をルックアップし、最初の子ノードをルックアップします。そのノードの内部で子ノード Albums をルックアップし、2番目の子ノードをルックアップします。2番目の Name ノードが返されます。
?Tracks?*[contains(?Writer, 'Brian')]
意味: 子ノード Tracks をルックアップし、自信のすべての子をルックアップします。子をルックアップ中に、各 Writer 子ノードの子をルックアップし、文字列 'Brian' を含むものを選択します。この式内には3つのルックアップ演算子が存在します。ノードセットがルックアップされる個所でそれぞれが新規ステップ内で使用されています。
?Artists?*[?Name="Queen"]?Albums?*?Name
意味: ルートオブジェクト内で lookup 子ノード Artists をルックアップし、"Queen" の値を持つ Name ノードを持つすべての子をルックアップします。コレアのノード内で、全ての子 Albums ノードをルックアップし、その子もルックアップします。これらの子内で、対応する Name ノードをルックアップ (して返) します。下のスクリーンショットでは、この式は XPath/XQuery ウィンドウ 内でターゲット JSON ドキュメントの JSON グリッドビュー 表示と共に表示されています。
