Как удалить массив ключей из объекта Postgres jsonb?

#postgresql #jsonb

#postgresql #jsonb

Вопрос:

У меня есть jsonb объект, из которого я хочу удалить ключи. У меня есть jsonb массив, содержащий ключи, которые я хочу удалить из объекта. Я вижу документацию по удалению одного ключа, например:

 SELECT '{"foo": true, "bar": false, "baz": true}'::jsonb - 'foo'
  

ВОЗВРАТ {"bar": false, "baz": true}

Но я не вижу никакой документации по одновременному удалению нескольких ключей, скажем, из Postgres или jsonb массива. Я хотел бы сделать что-то вроде этого псевдокода:

 SELECT '{"foo": true, "bar": false, "baz": true}'::jsonb - '["foo", "bar"]'::jsonb
-- I'd like to return {"baz": true}
  

Как я могу удалить массив ключей из jsonb объекта?

Ответ №1:

Используйте - оператор с массивом text в правой части:

 SELECT '{"foo": true, "bar": false, "baz": true}'::jsonb
       - '{foo,bar}'::text[];