はじめに
ドキュメントが増えてくると、
クエリコンソール上でドキュメントを探すのが大変になってきます。
なので、XQueryで条件指定して検索する必要性が出てきます。
この記事では検索クエリをまとめています。
環境
- OS:Windows7 (64bit)
- MarkLogic (9.0-3.1)
- 検索対象は JSONデータ を想定
XQuery
検索系XQueryをまとめています。
xdmp:directory で検索
xdmp:directoryの詳しい説明は公式ドキュメントを参照して下さい。
ディレクトリを指定して検索
XQuery
xquery version "1.0-ml";
for $x in xdmp:directory("/xxx/yyy/zzz/", "1")
return xdmp:node-uri($x);
ディレクトリ指定、かつ、条件指定
完全一致
XQuery
xquery version "1.0-ml";
for $x in xdmp:directory("/xxx/yyy/zzz/", "1")[aaa/bbb = "12345"]
return xdmp:node-uri($x);
比較
XQuery
xquery version "1.0-ml";
for $x in xdmp:directory("/xxx/yyy/zzz/","1")[aaa/ccc < "2018-01-01T00:00:00"]
return xdmp:node-uri($x);
cts:search で検索
cts:searchの詳しい説明は公式ドキュメントを参照して下さい。
ディレクトリを指定して検索
XQuery
xquery version "1.0-ml";
for $x in cts:search(fn:doc(),
cts:and-query((
cts:directory-query("/xxx/yyy/", "1")
))
)
return xdmp:node-uri($x)
ディレクトリを指定、かつ、条件指定
しれっとコレクションも指定しています。
XQuery
xquery version "1.0-ml";
for $x in cts:search(fn:doc(),
cts:and-query((
cts:directory-query("/xxx/yyy/", "1")
,cts:collection-query("ZZZZZ")
,cts:json-property-value-query("aaaaa", "AAAAA")
,cts:json-property-value-query("bbbbb", 99999)
))
)
return xdmp:node-uri($x)
小ネタ
関係が薄い小ネタを少々
ログ
xdmp:log("xxxxxxxxxx"); ってすると、ErrorLog.txt にログが出力されます。
公式ドキュメント
件数
xdmp:directory、cts:searchのどちらも記載したクエリを fn:count()
で囲ってあげると件数のみ取得できます。クエリコンソール上では役に立ちませんが、
XQueryをサーバ上に配置して Eval とかで利用するときに使用することがあるかもしれません。
以上