的Postgres - 删除jsonb数组元素(Postgres - remove element

2019-10-22 23:12发布

我的阵列jsonb元件( jsonb[]中,用ID和文本。 要删除我可以用一个元素:

UPDATE "Users" SET chats = array_remove(chats, '{"id": 2, "text": "my message"')

但我想只要按ID删除消息,原因得到消息将花了我另一个查询。

Answer 1:

假设丢失的信息:

  • 你的表有一个称为PK user_id
  • 要删除所有元素id = 2在整个表。
  • 你不想碰其他行。
  • id是的每个阵列内是唯一的chats

UPDATE "Users" u
SET    chats = array_remove(u.chats, d.chat)
FROM  (
   SELECT user_id, chat
   FROM   "Users", unnest(chats) chat
   WHERE  chat->>'id' = '2'
   ) d
WHERE  d.user_id = u.user_id;

以下的说明中的相匹配的问题所提供的信息的程度:



文章来源: Postgres - remove element from jsonb array