有没有办法删除/更新嵌套的json密钥对象(不是数组) 例如以下json:
{
"top": {
"nested": {
"leaf": 1
}
}
}
如何删除/更新叶元素?
我试过
SELECT jsonb '{"top": {"nested": {"leaf" : 1}}' - '{top,nested,leaf}'
但没有运气
答案 0 :(得分:11)
您需要使用#-
运算符,而不是-
:
SELECT jsonb '{"top": {"nested": {"leaf" : 1}}}' #- '{top,nested,leaf}';
┌─────────────────────────┐
│ ?column? │
├─────────────────────────┤
│ {"top": {"nested": {}}} │
└─────────────────────────┘
(1 row)
-
(给定text
参数):从左操作数中删除键/值对或字符串元素。键/值对基于其键值进行匹配。-
(给定int
参数):删除具有指定索引的数组元素(从结尾开始的负整数计数)。如果顶级容器不是数组,则会引发错误。#-
:删除具有指定路径的字段或元素(对于JSON数组,从末尾开始计算负整数)