从JSONB对象数组替换整个对象的PostgreSQL调用是什么

问题描述

从JSONB对象数组中替换整个对象的Postgresql调用是什么:

例如jsonB列数据:

[{a: 1,b: 2,c:3,d: 4,e: 5,f: 6},{a: 2,b: 12,c: 13,d: 14,e: 15,f: 16},{a: 3,b: 22,c: 23,d: 24,e: 25,f: 26}]

我想选择a = 2的值,并将整个对象2对象替换为a == 2对象参数,将列的结果替换为{a:2,b:102,c:103,d:104, e:105,f:106}

获取以下内容的完整jsonB新数组

[{a: 1,c: 3,b: 102,c: 103,d: 104,e: 105,f: 106},f: 26}]

我以前有一篇文章,希望从数组中删除一个效果很好的对象, What is the PostgreSQL call to remove an whole object from a JSONB array of Objects 但无法弄清楚如何在一次通话中进行删除和替换。请帮忙。

下面是仅删除对象的代码,请帮助进行修改以将对象也替换为新值

CREATE TABLE tab( ID INT,jsdata jsonb )

INSERT INTO tab VALUES (1,'[{a: 1,f: 26}]'::jsonb)

UPDATE tab t1 SET jsdata = ( SELECT jsonb_agg(elm) FROM tab t2 CROSS JOIN jsonb_array_elements(jsdata) AS elm WHERE (elm->>'a')::int != 2 )


RESULT: 1,[{a: 1,f: 26}]

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)