MarkLogic搜索Xquery

时间:2012-02-20 14:59:02

标签: marklogic

使用以下2个MarkLogic Xqueries来获得预期结果:

  1. 按时间戳列出所有文件

    for $x in xdmp:document-properties()//prop:last-modified  
    order by $x descending 
    return <uri>{xdmp:node-uri($x)} {$x}</uri>
    
  2. 从最新文件中搜索文档中的字符串

    for $a in doc("/contentC:/MLDemo/DataFiles/1234.xml")/*//@System_Name
    where $a ="Exchange"
    return $a
    
  3. 我是Marklogic和Xquery的新手。有人可以帮助我将这两个单独的脚本组合成一个脚本。

    提前致谢。

4 个答案:

答案 0 :(得分:1)

假设您没有更改默认配置,prop:last-modified应该会有所帮助。

请参阅https://docs.marklogic.com/guide/app-dev/properties以了解有关属性的更多信息。

请注意,/*//@System_Name where $a ="Exchange"对大型数据库的效果不佳。指定元素并使用XPath谓词。尝试更像/a/b/c[@d eq $value]的内容 - 或者如果您有多个元素/a/b/(c|d|e)[@z eq $value]

答案 1 :(得分:1)

let $URI:=<uris>{ for $x in xdmp:document-properties()//prop:last-modified
order by $x descending return <uri>{xdmp:base-uri($x)}</uri> }</uris>

for $a in $URI//uri let $doc:= doc($a)/*//@System_Name where $a ="Exchange" return $a

答案 2 :(得分:0)

这个问题有很多答案。

我建议你学习基本的XQuery语法。例如,尝试http://www.amazon.com/XQuery-Priscilla-Walmsley/dp/0596006349

答案 3 :(得分:-1)

for $a in doc("/contentC:/MLDemo/DataFiles/1234.xml")/*//@System_Name
return 
if($a eq "Exchange") then
       for $x in xdmp:document-properties()//prop:last-modified  
       order by $x descending 
       return <uri>{xdmp:node-uri($x)} {$x}</uri>
else ()