Xquery 在具有特定属性的元素中搜索值
首先尝试这个简单的xpath——验证它是否工作,以及它是否对您来说性能不够Xquery 在具有特定属性的元素中搜索值,xquery,marklogic,Xquery,Marklogic,首先尝试这个简单的xpath——验证它是否工作,以及它是否对您来说性能不够 cts:search(doc(), (some cts query?)) 它应该返回mytype=1和myval text content=“100”的elemZ的myval元素子元素 为了做得更好(使用cts:query),需要那些“可怕的”其他cts:query,可能还需要一些范围索引。 大致:(未经测试) 建议您从做任何事情的最简单表达式开始,然后逐个添加约束 在您的例子中,可以想象查询优化器会将简单的xpath
cts:search(doc(), (some cts query?))
它应该返回mytype=1和myval text content=“100”的elemZ的myval元素子元素
为了做得更好(使用cts:query),需要那些“可怕的”其他cts:query,可能还需要一些范围索引。
大致:(未经测试)
建议您从做任何事情的最简单表达式开始,然后逐个添加约束
在您的例子中,可以想象查询优化器会将简单的xpath优化为适当的cts查询。值得尝试和衡量绩效。我个人喜欢从一个基本的xpath开始,然后根据需要进行cts:查询 首先尝试这个简单的xpath——验证它是否有效,以及它的性能是否不足以满足您的需要
cts:search(doc(), (some cts query?))
它应该返回mytype=1和myval text content=“100”的elemZ的myval元素子元素
为了做得更好(使用cts:query),需要那些“可怕的”其他cts:query,可能还需要一些范围索引。
大致:(未经测试)
建议您从做任何事情的最简单表达式开始,然后逐个添加约束
在您的例子中,可以想象查询优化器会将简单的xpath优化为适当的cts查询。值得尝试和衡量绩效。我个人喜欢从一个基本的xpath开始,然后根据需要进行cts:查询
//elemZ[@mytype=1]/myval[. = "100" ]
search(doc(),
cts:element-query(xs:QName("elemZ"),
cts:and-query((
cts:element-attribute-value-query(xs:QName("elemZ"), xs:QName("mytype"), "1"),
cts:element-value-query(xs:QName("myval"), "100") )) ) )