В PostgreSQL, для удаления значения из массива типа jsonb, можно использовать функцию jsonb_remove(). Эта функция позволяет удалить элемент по указанному пути.
Синтаксис функции jsonb_remove() выглядит следующим образом:
jsonb_remove(jsonb_object, VARIADIC key_path)
Где:
- jsonb_object - исходный объект jsonb, из которого нужно удалить значение.
- key_path - путь к значению, которое нужно удалить.
Пример использования:
1. Предположим, у нас есть таблица "users" с полем "data" типа jsonb:
CREATE TABLE users (
id serial PRIMARY KEY,
data jsonb
);
2. Добавим несколько записей в таблицу:
INSERT INTO users (data)
VALUES ('{"name": "John", "age": 28, "hobbies": ["reading", "swimming", "gaming"]}'::jsonb),
('{"name": "Jane", "age": 32, "hobbies": ["golf", "tennis", "coding"]}'::jsonb);
3. Теперь давайте удалим значение "gaming" из массива "hobbies" в записи с именем "John":
UPDATE users
SET data = jsonb_remove(data, 'hobbies', 'gaming')
WHERE data ->> 'name' = 'John';
4. Проверим результат:
SELECT data FROM users WHERE data ->> 'name' = 'John';
Вы должны увидеть следующий результат:
{"name": "John", "age": 28, "hobbies": ["reading", "swimming"]}
Таким образом, функция jsonb_remove() позволяет удалить значение из массива типа jsonb в PostgreSQL.