このような XML ドキュメントがあります。
<Authors>
<Author>
<name>R.N Tagore</name>
<book>Gitanjli</book>
</Author>
<Author>
<name>Premchand</name>
<book>Panch Parameshvar</book>
</Author>
<Author>
<name>H.R Bacchan</name>
<book>Madhushala</book>
</Author>
<Author>
<name>Premchand</name>
<book>Gaban</book>
</Author>
<Author>
<name>Premchand</name>
<book>Nirmala</book>
</Author>
<Author>
<name>Premchand</name>
<book>Nirmala</book>
</Author>
</Authors>
上記の XML から、著者名の個別のリストが必要です。
このために、次のようなクエリを書くことができます。
fn:distinct-values(cts:search(fn:doc()//pa:Author/pa:name,cts:and-query(())))
上記のコードが行うことは、作成者名の結果を取得し、次にfn:distinct-values()関数がその結果セットから個別の作成者名をフィルター処理することです。現在のシナリオでは、XML のデータは 6 しかないため問題なく動作しますが、データが非常に多い場合は 50 lac としましょう
cts:search(fn:doc()//pa:Author/pa:name,cts:and-query(()))
クエリの上記の部分では、50 lac の要素をメモリにキャッシュしようとしているため、 XDMP-EXPNTREECACHEFULL例外が発生します。cts:searchまたはsearch:search API
を使用して個別の著者名のみを取得するには、あなたの助けが必要です。最初に結果セットを取得してから、 fn:distinct-values()を使用してその結果セットから個別のレコードを抽出したくありません。
ありがとう、