I am using MarkLogic Java API to search JSON documents stored in MarkLogic 9 collection. My JSON is structured as below
{
"time": "2021-02-09T11:09:53",
"payload": {
"a": "v1",
"b": "v2",
"c": [
{
"d": {
"a": "v1",
"b": "v2"
}
}
]
}
}
I am trying to search for /payload/a=v1 and /payload/b=v2 but the search also returns all those documents where /payload/c/d/a=v1 and /payload/c/d/b=v2
Here is my Java code
StructuredQueryBuilder sqb = queryManager.newStructuredQueryBuilder();
List<StructuredQueryDefinition> list = new ArrayList<>();
list.add(sqb.collection("collectionName"));
StructuredQueryDefinition a = sqb.value(sqb.jsonProperty("a"), "v1");
StructuredQueryDefinition b = sqb.value(sqb.jsonProperty("b"), "v2");
list.add(sqb.and(sqb.containerQuery(sqb.jsonProperty("payload"), sqb.and(a, b)))));
StructuredQueryDefinition definition = sqb.and(list.toArray(new StructuredQueryDefinition[list.size()]));
DocumentPage page = docManager.search(definition, 1L);
Any help would be well appreciated.
Thanks, AK