ВЫБРАТЬ на JSON операции Postgres столбец массива? - PullRequest
0 голосов
/ 05 марта 2020

У меня есть столбец типа jsonb[] (массив Postgres из jsonb объектов), и я хотел бы выполнить SELECT для строк, где критерии удовлетворяются хотя бы для одного из объектов. Что-то вроде:

-- Schema would be something like
mytable (
  id UUID PRIMARY KEY,
  col2 jsonb[] NOT NULL
);

-- Query I'd like to run
SELECT
  id,
  x->>'field1' AS field1
FROM
  mytable
WHERE
  x->>'field2' = 'user' -- for any x in the array stored in col2

Я посмотрел на ANY и UNNEST, но не совсем понятно, как этого добиться, поскольку вы не можете запустить unnest в предложении WHERE , Я также не знаю, как указать, что я хочу field1 от соответствующего объекта.

Нужна ли мне таблица WITH со значениями, расширенными для объединения? И как бы я достиг этого и сохранил id из другого столбца?

Спасибо!

1 Ответ

1 голос
/ 05 марта 2020

Вам необходимо удалить массив, а затем получить доступ к каждому json значению

SELECT t.id,
       c.x ->> 'field1' AS field1
FROM mytable t
  cross join unnest(col2) as c(x)
WHERE c.x ->> 'field2' = 'user' 

. Это вернет одну строку для каждого json значения в массиве.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...