@Urbansamurai

Как убрать элемент из JSONB массива по индексу?

Попробовал такой вариант

UPDATE group_settings SET group_recepients = array_remove(group_recepients, item_to_remove) 
    FROM (
        SELECT arr.item_object as item_to_remove
        FROM group_settings,
        jsonb_array_elements(group_recepients) WITH ordinality arr(item_object, position) 
        WHERE customer_group_id is NULL AND arr.position=1
    )
    WHERE customer_group_id IS NULL AND user_id = '...';


но выдает очень странную ошибку:
ERROR: unknown signature: array_remove(jsonb, jsonb) (desired jsonb)
  • Вопрос задан
  • 266 просмотров
Решения вопроса 1
@galaxy
Если group_recepients - JSON объект или массив, то через оператор "-" (в случае объекта убирает по ключу, в случае массива - по значению):
postgres=# select '{"email": "a@example.com", "telegram_token": "", "telegram_user_id":""}'::jsonb - 'email';
                    ?column?
------------------------------------------------
 {"telegram_token": "", "telegram_user_id": ""}
(1 row)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы