For the following document:
confusion::1
{
"people": [
"person": {
"name": {
"firstName": "John",
"lastName": "Doe"
}
}
]
}
The following index:
CREATE INDEX `nested_confusion_idx`
ON `data1` (meta().`id`,
ARRAY
[person.name.firstName,
person.name.lastName
]
FOR reg IN people END)
WHERE meta().`id` LIKE "confusion::%"
USING GSI;
The following query does not work as expected:
SELECT meta().`id`, people[*].person.name.firstName
FROM data1
WHERE ((meta().`id`) like "confusion::%")
Yet, this query has changes [ * ] on every element in the path to get the desired results:
SELECT meta().`id`, people[*].person[*].name[*].firstName
FROM data1
WHERE ((meta().`id`) like "confusion::%")
Upon further experimentation…
This also works:
SELECT meta().`id`, people[*].person[0].name.firstName
FROM data1
WHERE ((meta().`id`) like "confusion::%")
And so does this:
SELECT meta().`id`, people[0].person.name.firstName
FROM data1
WHERE ((meta().`id`) like "confusion::%")
But, of course, this does not:
SELECT meta().`id`, people[0].person[0].name[0].firstName
FROM data1
WHERE ((meta().`id`) like "confusion::%")
And, when it works, the response isn’t fully qualified person.name.firstName
, it’s just firstName