SELECT ARRAY_FLATTEN(ARRAY v.title FOR n:v IN b.data END,1) AS title
FROM books b;
OR
SELECT ARRAY_FLATTEN(OBJECT_VALUES(b.data)[*].title,1) AS title
FROM books b;
If need across the documents
WITH books AS ([ { "data": { "author1": { "title": [ "1", "2" ] }, "author2": { "title": [ "3", "4" ] } } },
{ "data": { "author1": { "title": [ "1", "5" ] }, "author2": { "title": [ "6", "1" ] } } }
])
SELECT DISTINCT RAW t
FROM books AS b
UNNEST ARRAY_FLATTEN(ARRAY v.title FOR n:v IN b.data END,1) AS t;
FOR n:v IN b.data
Looping construct
If b.data is OBJECT n holds field name, v holds value
If b.data is ARRAY n holds position, v holds value