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"}]
答案 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)