Yes, it is possible but you will need to structure your query slightly 
different.

By passing all of the values to the cts:element-value-query() as a sequence the 
default is to return documents wher ANY of the values match. In effect it is an 
OR relationship when done this way.

To only get documents that have all specified values in the specified element 
use cts:and-query() to wrap individual instances of the 
cts:element-value-query() like this:

               cts:and-query((
                              cts:element-value-query(xs:QName('defaultName'), 
'Consumers'),
cts:element-value-query(xs:QName('defaultName'), 'Authors'),
cts:element-value-query(xs:QName('defaultName'),'Users'),
cts:element-value-query(xs:QName('defaultName'), 'Administrators')
               ))

The one caveat is that if there are muiltiple "defaultName" elements this will 
match if a combination of any of the "defaultName" elements match all 
instances.  We can get more specific if you have more than one "defaultName" 
element.

Give it a try.

-Keith

From: [email protected] 
[mailto:[email protected]] On Behalf Of Gary Larsen
Sent: Tuesday, June 6, 2017 8:26 AM
To: 'General MarkLogic Developer Discussion' <[email protected]>
Subject: [MarkLogic Dev General] match all values in sequence

Sorry if this is a bit off topic, but is it possible with cts or a predicate to 
find a document containing elements which match all values in a sequence?

For example:

cts:element-value-query(xs:QName('defaultName'), 
('Consumers','Authors','Users','Administrators'))

Thanks,
Gary
_______________________________________________
General mailing list
[email protected]
Manage your subscription at: 
http://developer.marklogic.com/mailman/listinfo/general

Reply via email to