Postgres运营商" - "不是从jsonb数组中删除文本元素

时间:2017-04-20 05:37:25

标签: postgresql

images列的类型为jsonb。

Reading Postgres docs on the - operator for text它声明:

  

从左操作数中删除键/值对或字符串元素。键/值对基于其键值进行匹配。

但是,我没有成功。运行更新后,我看到数组中的元素仍然存在。这是因为它是数组中唯一的元素吗?如果是这样,我将如何处理这种情况?

dev_dolphin_db=#  update listings set images = images - 'filename' where listings.id = 2;
UPDATE 1
id               | 2
created_at       | 2017-04-20 04:19:41.009022+00
posted_by        | 101090922
images           | [{"review": "/9j/4AAQSC1LnS//2Q==", "filename": "3/2/image-3-2-1492661981049.jpeg"}]

1 个答案:

答案 0 :(得分:2)

如果散列始终位于jsonb数组的第0个索引中,则可以使用

将其删除
dev_dolphin_db=#  update listings set images = images #- '{0,filename}' where listings.id = 2;

这使用postgres描述为的#-运算符:

Delete the field or element with specified path (for JSON arrays, negative integers count from the end)