LoginSignup
5
6

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-05-16

はじめに

ドキュメントが増えてくると、
クエリコンソール上でドキュメントを探すのが大変になってきます。
なので、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 とかで利用するときに使用することがあるかもしれません。

以上

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6