【问题标题】:Removing json objects from an array stored in postgresql column从存储在 postgresql 列中的数组中删除 json 对象
【发布时间】:2019-10-14 08:49:58
【问题描述】:

我有一个 json 对象数组,我想从中删除三个特定对象。 例如:

[{"id": "aaa"}, {"id": "aab"}, {"id": "aac"}, {"id": "aad"}]

我需要更新表并从数组中删除包含"aaa""aab""aac" 的对象,以便数组只包含

[{"id": "aad"}]

或任何其他存储在数组中且不包含前面提到的存储在“id”中的值的 json 对象。

我正在使用 Postgres,我只知道我需要使用 UPDATE,但仅此而已(我还是个初学者)。

【问题讨论】:

    标签: sql arrays json postgresql


    【解决方案1】:

    您需要取消嵌套数组,过滤掉不需要的元素,然后聚合回来:

    update the_table
       set the_column = (select jsonb_agg(j)
                         from jsonb_array_elements(the_table.the_column) as t(j)
                         where j ->> 'id' not in ('aaa','aab','aac'));
    

    在线示例:https://rextester.com/HCJK50138

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-22
      • 1970-01-01
      • 1970-01-01
      • 2013-04-16
      • 1970-01-01
      • 2023-01-17
      • 1970-01-01
      • 2019-11-25
      相关资源
      最近更新 更多