Reputation: 405
Trying to get count of cars based on different filters and within one collection. Even though we see multiple cars that meet the requirement, the query is returning count 0.
fn:count(cts:search(fn:collection("com.cars"), cts:and-query((
cts:element-word-query(xs:QName("exteriorColor"), "red", "wildcarded" ),
cts:element-word-query(xs:QName("interiorColor"), "gray", "wildcarded" )
cts:element-word-query(xs:QName("powerSteering"), json:null(), "wildcarded" )
))))
Test Data:
{
"id":1
"carName":"Toyoto",
"exteriorColor": "red",
"interiorColor": "gray",
"powerStreering": null
}
{
"id":2
"carName":"Toyoto",
"exteriorColor": "blue",
"interiorColor": "gray",
"powerStreering": null
}
{
"id":3
"carName":"Toyoto",
"exteriorColor": "red",
"interiorColor": "gray",
"powerStreering": "yes"
}
{
"id":4
"carName":"Toyoto",
"exteriorColor": "white",
"interiorColor": "gray",
"powerStreering": null
}
{
"id":5
"carName":"Toyoto",
"exteriorColor": "red",
"interiorColor": "gray",
"powerStreering": null
}
Upvotes: 3
Views: 411
Reputation: 3609
You're using cts:element-word-query
when you need to be using cts:json-property-word-query
instead: https://docs.marklogic.com/cts:json-property-word-query
To test for null, I believe you should be using:
cts:json-property-value-query("propertyName", json:null())
Upvotes: 6