如何在MarkLogic中查询value为1120721的文档URI
查找指定节点值的文档URI
XQuery实现方式
提供两种写法,可按需选择:
方式1:直接遍历匹配(适合小数据集)
xquery version "1.0-ml"; declare namespace cre = "http://nl.abnamro.com/cre"; for $doc in collection()//cre:Firstdocument/contact/contactId/value[text() = "1120721"]/../../../../.. return xdmp:uri($doc)
方式2:利用索引高效查询(适合大数据集)
前提是数据库已为cre:value节点创建元素值索引:
xquery version "1.0-ml"; declare namespace cre = "http://nl.abnamro.com/cre"; cts:search( collection(), cts:element-value-query(xs:QName("cre:value"), "1120721") ) ! xdmp:uri(.)
JavaScript实现方式
'use strict'; const creNs = 'http://nl.abnamro.com/cre'; const valueQName = fn.QName(creNs, 'value'); // 查询匹配文档并输出URI cts.search(cts.elementValueQuery(valueQName, '1120721')) .toArray() .forEach(doc => console.log(xdmp.documentUri(doc)));
关键说明
- 必须绑定
http://nl.abnamro.com/cre命名空间:因为<Firstdocument>及其子节点(包括<value>)都继承了该命名空间,查询时不指定会无法匹配节点。 - 索引优化:如果数据量较大,优先使用基于索引的查询方式,能大幅提升性能。
内容的提问来源于stack exchange,提问作者Aviator
相关产品推荐
相关产品推荐

