PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Postgres - remove elemento da matriz jsonb


Supondo que faltam informações:
  • Sua tabela tem um PK chamado user_id .
  • Você deseja remover todos os elementos com id = 2 em toda a mesa.
  • Você não quer tocar em outras linhas.
  • id é único dentro de cada array de 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;

A explicação a seguir corresponde à extensão das informações fornecidas na pergunta: