sql - 从存储在 postgresql 列中的数组中删除 json 对象
问题描述
我有一个 json 对象数组,我想从中删除三个特定对象。例如:
[{"id": "aaa"}, {"id": "aab"}, {"id": "aac"}, {"id": "aad"}]
我需要更新表并从数组中删除包含"aaa"
,"aab"
和的对象,"aac"
以便数组只包含
[{"id": "aad"}]
或任何其他存储在数组中且不包含前面提到的存储在“id”中的值的 json 对象。
我正在使用 Postgres,我只知道我需要使用 UPDATE,但仅此而已(我仍然是初学者)。
解决方案
您需要取消嵌套数组,过滤掉不需要的元素,然后聚合回来:
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'));
推荐阅读
- testing - VSTest.Console.exe 中用于 Win Universal Apps 单元测试的 FrameworkUap10 在哪里
- css - 当浏览器窗口调整大小时,在居中元素和绝对/固定元素之间平滑移动
- excel - 需要帮助在 Excel 中的两个不相似列表中查找匹配项
- python - 如何找到一个巨大的 csv 文件的 10 个最大值?
- spring - 弹簧集成。缺少消息。民意调查导致消息:GenericMessage
- c - 将NULL分配给C中链表中的头节点
- sql-server - HSQLDB Junit 测试对 DB2 和 SQL Server NOLOCK 查询失败
- angular - PrimeNG - 留言
- angular - Angular - 更新根 index.html 中的 html 属性
- angular - markAsUntouched 未清除红线