Antony
Antony

Reputation: 976

marklogic 8 - How to search collection wise

I have tried this below mentioned Xquery in my query console, but I need search the data from collections wise?

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

Please suggest me how to add the collection in above mentioned XQuery?

Upvotes: 0

Views: 155

Answers (1)

mholstege
mholstege

Reputation: 4912

First I would say that since you ultimately want documents rather than URIs, it would be more effective to use cts:search directly. You can add the "unfiltered" option if you want to avoid the cost of filtering, e.g.:

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

or, since you only care about /PS/P elements:

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

To search within a collection, replace the doc() with collection("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

Upvotes: 3

Related Questions