2016-04-07 7 views
0

Ich habe dieses unten erwähnte Xquery in meiner Fragekonsole versucht, aber ich suche die Daten von Ansammlungen weise?marklogic 8 - Wie man Sammlung klug sucht

let $value1 := "antony" 
let $value2 := "cse" 
for $uri1 in cts:uris((),(), ( 
    cts:element-query(xs:QName("P"), 
     cts:and-query((
      cts:element-attribute-value-query(xs:QName("P"),xs:QName("name"),$value1), 
      cts:element-attribute-value-query(xs:QName("P"),xs:QName("value"),$value2) 
    )) 
    ) 
)) 
let $xml := doc($uri1) 
return $xml//PS/P [@name eq "volume"]/@value 

Bitte schlagen Sie mir vor, wie Sie die Sammlung in oben genannten XQuery hinzufügen?

Antwort

3

Zuerst würde ich sagen, dass, da Sie schließlich Dokumente und nicht URIs wollen, es effektiver wäre, cts: search direkt zu verwenden. Sie können die „ungefiltert“ Option hinzufügen, wenn Sie die Kosten für die Filterung vermeiden wollen, zB:

let $value1 := "antony" 
let $value2 := "cse" 
return 
cts:search(doc(), 
    cts:element-query(xs:QName("P"), 
    cts:and-query((
     cts:element-attribute-value-query(xs:QName("P"),xs:QName("name"),$value1), 
     cts:element-attribute-value-query(xs:QName("P"),xs:QName("value"),$value2) 
    )) 
), "unfiltered" 
)//PS/P[@name eq "volume"]/@value 

oder, da man nur über/PS/P Elemente Pflege:

cts:search(doc()//PS/P, 
    cts:element-query(xs:QName("P"), 
    cts:and-query((
     cts:element-attribute-value-query(xs:QName("P"),xs:QName("name"),"antony"), 
     cts:element-attribute-value-query(xs:QName("P"),xs:QName("value"),"cse") 
    )) 
), "unfiltered" 
)[@name eq "volume"]/@value 

suchen innerhalb eine Sammlung, ersetzen Sie die doc() mit Sammlung ("yourcollection"):

cts:search(collection("yourcollection")//PS/P, 
    cts:element-query(xs:QName("P"), 
    cts:and-query((
     cts:element-attribute-value-query(xs:QName("P"),xs:QName("name"),"antony"), 
     cts:element-attribute-value-query(xs:QName("P"),xs:QName("value"),"cse") 
    )) 
), "unfiltered" 
)[@name eq "volume"]/@value 
+0

Dank @mholstege, funktioniert es gut. – Antony