![](/img/trans.png)
[英]How to root element dynamically provide in cts:search using Marklogic
[英]How to get the maximum value of an element using cts:values in MarkLogic?
我想从数据库中存在的所有文档中获取<ID>
的最大值。
样本文件
<root xmlns="http://marklogic.com/sample">
<node>
<ID>3253523</ID>
<value1>.....</value1>
<value2>.....</value2>
<value3>.....</value3>
<value4>.....</value4>
.....................
</node>
</root>
我尝试的方法如下-
我使用uri http://marklogic.com/sample
创建了前缀为sa的路径名称空间。
创建了一个类型为int的路径范围索引,其路径为/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"
命名空间,并在数据库中插入了一些xml文件。
创建了路径名称空间,路径范围索引,并运行了共享的cts查询,它运行良好,因此Elijah
是正确的,您只需要在xml中指定名称空间即可。
在查询中的小变化是在declare namespace
声明,前缀将sa
不es
。
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.