'if Exists()' 搜索 api 行为需要 XQuery 语法
Need XQuery syntax for 'if Exists()' behaviour in search api
我有一个要求,我们只需要在其活动版本中具有 <associated-bundles>
元素的文档中执行 marklogic 搜索。
下面是我们的文档结构
<document document-status='active'>
<file>
<version id=1 version-status='active'>
<file-name/>
<associated-bundles>
<bundle doc-id="100082"></bundle>
<bundle doc-id="100083"></bundle>
<bundle doc-id="100000"></bundle>
</associated-bundles>
...
<file-level-visits>3</file-level-visits>
</version>
<version id=2 version-status='archived'>
<file-name/>
<uploaded-by>
...
<file-level-visits>2</file-level-visits>
</version>
<version id=3 version-status='archived'>
<file-name/>
<uploaded-by>
...
<file-level-visits>4</file-level-visits>
</version>
</file>
考虑到上述文档结构,我只需要对活动版本中包含 <associated-bundles>
元素的文档执行搜索。
注意:文档中只有 1 个有效版本。
以下是仅在活动文件 "version-status" 中搜索的查询。但除此之外,我还想为文档包括 'ifExists' 对 <associated-bundles>
的检查。
cts:element-query (xs:QName ("version"),cts:and-query ((cts:element-attribute-value-query(fn:QName("","version"), fn:QName("","version-status"), "active", ("lang=en"), 1)
)));
请让我知道如何实现。
您可以使用 cts:element-query() 使用文档中的以下语法检查元素是否存在:
cts:element-query(xs:QName("my-element"),cts:and-query( () ))
我有一个要求,我们只需要在其活动版本中具有 <associated-bundles>
元素的文档中执行 marklogic 搜索。
下面是我们的文档结构
<document document-status='active'>
<file>
<version id=1 version-status='active'>
<file-name/>
<associated-bundles>
<bundle doc-id="100082"></bundle>
<bundle doc-id="100083"></bundle>
<bundle doc-id="100000"></bundle>
</associated-bundles>
...
<file-level-visits>3</file-level-visits>
</version>
<version id=2 version-status='archived'>
<file-name/>
<uploaded-by>
...
<file-level-visits>2</file-level-visits>
</version>
<version id=3 version-status='archived'>
<file-name/>
<uploaded-by>
...
<file-level-visits>4</file-level-visits>
</version>
</file>
考虑到上述文档结构,我只需要对活动版本中包含 <associated-bundles>
元素的文档执行搜索。
注意:文档中只有 1 个有效版本。
以下是仅在活动文件 "version-status" 中搜索的查询。但除此之外,我还想为文档包括 'ifExists' 对 <associated-bundles>
的检查。
cts:element-query (xs:QName ("version"),cts:and-query ((cts:element-attribute-value-query(fn:QName("","version"), fn:QName("","version-status"), "active", ("lang=en"), 1)
)));
请让我知道如何实现。
您可以使用 cts:element-query() 使用文档中的以下语法检查元素是否存在:
cts:element-query(xs:QName("my-element"),cts:and-query( () ))