У меня сложный запрос, который пытается найти совпадения, сравнивающие список массивов JSON со списком значений JSON в столбце
Таблица «Вещи» со столбцом «Ключевые слова» будет содержать что-то вроде:
'["car", "house", "boat"]'::JSONB
Запрос будет содержать значения:
'["car", "house"]'::JSONB
Я хотел бы найти все строки, в которых есть ОБА "машина" и "дом", содержащиеся в списке. Вот моя (в основном) слабая попытка:
SELECT
*
FROM
"Things"
WHERE
"Keywords"::JSONB ?| ARRAY(
SELECT * FROM JSONB_ARRAY_ELEMENTS('["house","car"]'::JSONB)
)::TEXT[]
Также, когда дело доходит до индексации, я предполагаю, что добавление индекса GIST было бы моим лучшим вариантом.