我有一个jsonb数组 appliances
如果一个物体不存在的话,我想把它推进去。我试着用这个问题
update home
set appliances = appliances ||
'{"name": "Television", "uuid": "f6847317-d6fc-476f-8439-3a81f169e9ad"}'
where uuid = 'f5018a28-fd5f-43df-9d09-4e73da448823'
and not
'{"name": "Television", "uuid": "f6847317-d6fc-476f-8439-3a81f169e9ad"}'::jsonb
< @ appliances;
但它抛出了一个错误:
错误:运算符不存在:jsonb<@jsonb[]
列 appliances
数据类型为 jsonb[]
. 我怎样才能使这个问题正确?
2条答案
按热度按时间4szc88ey1#
这个
<@
操作员和||
postgresql数组上的运算符需要两个操作数都是数组,而不仅仅是其中一个。mtb9vblg2#
错误消息告诉您:您的列正在存储
jsonb
(jsonb[]
),不是jsonb
(可以是jsonb数组或对象)。所以基本上你需要要么修复你的模式要么jsonb
列,或者使用数组运算符而不是jsonb运算符。这应该管用,因为
jsonb
支持相等比较: