![](/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.