PostgreSQL:使用 json 对象从数组中删除键/值对

2024-03-09

我有一张桌子:

CREATE TABLE movies( id text, data jsonb );

INSERT INTO movies(id, data) VALUES (
  '1', 
  {
      "actors": [
        {
            "name": "actor1",
            "email": "[email protected] /cdn-cgi/l/email-protection"
        },
        {
            "name": "actor2",
            "email": "[email protected] /cdn-cgi/l/email-protection"
        }
      ]
  }
);

我想要的是删除emailactor 数组的每个 json 对象中的字段(键 + 值)。

我已经尝试了以下解决方案,虽然它确实执行了,但它对数组根本没有任何影响:

update movies
set data = jsonb_set(data, '{actors}', (data->'actors') - '{actors, email}')
where id = '1';

操纵all数组中的项目,您将需要使用子查询:

UPDATE movies
SET data = jsonb_set(data, '{actors}', (
  SELECT jsonb_agg(actor - 'email')
  FROM jsonb_array_elements(data->'actors') actor
))
WHERE id = '1';

()

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PostgreSQL:使用 json 对象从数组中删除键/值对 的相关文章

随机推荐