簡體   English   中英

當特定元素在Marklogic中多次出現時,僅搜索那些XML

[英]Search only those XMLs when a particular element occurs multiple times in Marklogic

我試圖在Marklogic中多次搜索包含元素<document>文檔XML。 以下是我要檢索的一個這樣的文檔XML的結構:

<root>
    <documents>
        <document>
            <id>1</id>
            <name>roy</name>
            <otherData></otherData>
        </document>
        <document>
            <id>2</id>
            <name>roy</name>
            <otherData></otherData>
        </document>
        ....
        ...
        ..
        .
        <document>
            <id>3</id>
            <name>roy</name>
            <otherData></otherData>
        </document>

    </documents>
</root>

我不想檢索具有以下結構的XML:

<root>
    <documents>
        <document>
            <id>3</id>
            <name>roy</name>
            <otherData></otherData>
        </document>
    </documents>
</root>

我可以使用帶有xs:QName("document") element-query搜索是否存在或最少一個,但是不確定如何進行多個搜索。

任何幫助將非常感激。

在MarkLogic中,沒有真正簡單的方法可以很好地進行擴展。 最簡單的方法是充實文檔,在<documents>元素中添加count屬性,並在每次觸摸文檔時保持其最新狀態。 然后,您可以對count屬性進行簡單的范圍索引,並直接獲得所需的內容。

HTH!

我喜歡接受的答案,但嘗試同時使用cts:search和XPATH做不同的事情。 它比僅使用XPATH更快:

xquery version "1.0-ml";
let $query1:= cts:element-query(xs:QName("document"),cts:and-query( () )),
$query2:= cts:element-query(xs:QName("documents"),$query1)
return 
for $doc in cts:search(collection(),$query2,("unfiltered")) where count($doc/root/documents/document) > 1  return  $doc

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM