Использование следующего порядка 2 MarkLogic Xqueries для получения ожидаемого результата:
Для вывода всех документов по отметке времени
for $x in xdmp:document-properties()//prop:last-modified order by $x descending return <uri>{xdmp:node-uri($x)} {$x}</uri>
Для поиска строки в документе из последнего файла
for $a in doc("/contentC:/MLDemo/DataFiles/1234.xml")/*//@System_Name where $a ="Exchange" return $a
Я новичок в Marklogic и Xquery. Может кто-нибудь plesae помочь мне объединить эти два отдельных сценария в один сценарий.
Заранее спасибо.
let $URI:=<uris>{ for $x in xdmp:document-properties()//prop:last-modified<br> 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
Если вы не меняете конфигурацию по умолчанию, prop:last-modified должно помочь.
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]
/*//@System_Name where $a ="Exchange"
/a/b/c[@d eq $value]
/a/b/(c|d|e)[@z eq $value]
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 ()
Есть много ответов на этот вопрос.
Я бы порекомендовал вам изучить базовый синтаксис XQuery.Например, попробуйте http://www.amazon.com/XQuery-Priscilla-Walmsley/dp/0596006349