我想从数据库中存在的所有文档中获取<ID>
的最大值。
样本文件 -
<root xmlns="http://marklogic.com/sample">
<node>
<ID>3253523</ID>
<value1>.....</value1>
<value2>.....</value2>
<value3>.....</value3>
<value4>.....</value4>
.....................
</node>
</root>
我尝试的方法如下 -
http://marklogic.com/sample
创建了一个前缀为sa的路径命名空间。/sa:root/sa:node/sa:ID
3.尝试使用以下代码从数据库中获取最大值 -
declare namespace sa = "http://marklogic.com/sample";
(cts:values(cts:path-reference('/sa:root/sa:node/sa:ID'), (), "descending"))[1]
但这给了我一个空的序列。不知道我在这里缺少什么。
有什么建议 ??
尝试将带有命名空间绑定的映射作为cts:path-reference()
的第三个参数传递。见:http://docs.marklogic.com/cts:path-reference
顺便说一下,cts:max()
可能是从范围索引中获得最大值的最有效方法。见:http://docs.marklogic.com/cts:max
该方法类似于以下片段:
cts:max(
cts:path-reference('/sa:root/sa:node/sa:ID', (),
map:entry("sa", "http://marklogic.com/sample")
))
希望有所帮助,
正如Elijah Bernstein-Cooper
所建议的那样,我刚刚在你共享的xml中添加了xmlns="http://marklogic.com/sample"
命名空间,并在db中插入了几个xml文件。
创建路径命名空间,路径范围索引并运行共享cts查询,它完美地工作,所以Elijah
是正确的,你只需要在xml中指定命名空间。
您的查询中的小变化是在declare namespace
语句中,前缀将是sa
而不是es
。
希望这可以帮助。