Я пытаюсь добавить поддержку удаления ключа в jsonb, когда задаю значение «__delete __».
Я нашел хорошую функцию для объединения ключей здесь:
http://blog.bguiz.com/2017/json-merge-postgresql/
Однако он не поддерживает удаление ключей из объектов.
Вот оно:
CREATE OR REPLACE FUNCTION "public"."jsonb_merge_recurse"("orig" jsonb, "delta" jsonb)
RETURNS "pg_catalog"."jsonb" AS $BODY$
select
jsonb_object_agg(
coalesce(keyOrig, keyDelta),
case
when valOrig isnull then valDelta
when valDelta isnull then valOrig
when (jsonb_typeof(valOrig) <> 'object' or jsonb_typeof(valDelta) <> 'object') then valDelta
else jsonb_merge_recurse(valOrig, valDelta)
end
)
from jsonb_each(orig) e1(keyOrig, valOrig)
full join jsonb_each(delta) e2(keyDelta, valDelta) on keyOrig = keyDelta
$BODY$
LANGUAGE sql VOLATILE
COST 100
Я хотел бы удалить ключ из объекта, в случае, если valDelta = '__delete __'.
Любая помощь высоко ценится, спасибо! :)