Это сложный вопрос, в зависимости от того, какой должна быть результирующая структура. И отказ от ответственности, может быть более краткий способ сделать это (но я еще не нашел это - может быть, есть другой способ, который не включает OBJECT_NAMES
?).
Но в любом случае, ключ для меня это был ARRAY
оператор сбора .
Например, это:
SELECT ARRAY a FOR a IN ARRAY_DISTINCT(ARRAY_AGG(allFieldNames))
WHEN a LIKE '%test%' END AS filteredFieldNames
FROM mybucket b UNNEST object_names(b) AS allFieldNames
Будет возвращать результаты типа
[
{
"filteredFieldNames": [
"testField1",
"anotherTestField"
]
}
]
Если вы хотите другой формат, вы можете работать с выражением оператора ARRAY. Например:
SELECT ARRAY { "fieldName" : a } FOR a IN
ARRAY_DISTINCT(ARRAY_AGG(allFieldNames))
WHEN a LIKE '%test%' END AS filteredFieldNames
FROM mybucket b UNNEST object_names(b) AS allFieldNames
Что вернет:
[
{
"filteredFieldNames": [
{
"fieldName": "testField1"
},
{
"fieldName": "anotherTestField"
}
]
}
]