【MarkLogic】クエリコンソールで使う検索系XQuery集

More than 1 year has passed since last update.


はじめに

ドキュメントが増えてくると、

クエリコンソール上でドキュメントを探すのが大変になってきます。

なので、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 とかで利用するときに使用することがあるかもしれません。

以上