как получить из jsonb subJesonb по массиву ключей в postgres - PullRequest
0 голосов
/ 24 марта 2020

У меня есть поля jsonb и ключи массива, как получить sub jsonb

field = {"f1":1, "f2":null, "f3":"fff", "f4":"4"}

kes = ["f1", f3]

Нам нужно получить: {"f1":1, "f3":"fff"}

1 Ответ

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

Вы можете откатить оба, объединить результаты и агрегировать обратно:

Что-то вроде:

select jsonb_object_agg(i.k, i.v)
from jsonb_each('{"f1":1, "f2":null, "f3":"fff", "f4":"4"}'::jsonb) as i(k,v)
  join jsonb_array_elements_text('["f1", "f3"]') t(k) on t.k = i.k
...