Lio*_*orH 4 postgresql json jsonb
有没有办法删除/更新嵌套的json密钥对象(而不是数组),例如以下json:
{
"top": {
"nested": {
"leaf": 1
}
}
}
Run Code Online (Sandbox Code Playgroud)
如何删除/更新叶元素?
我试过了
SELECT jsonb '{"top": {"nested": {"leaf" : 1}}' - '{top,nested,leaf}'
但没有运气
Mar*_*rth 12
您需要使用#-运算符,而不是-:
SELECT jsonb '{"top": {"nested": {"leaf" : 1}}}' #- '{top,nested,leaf}';
???????????????????????????
? ?column? ?
???????????????????????????
? {"top": {"nested": {}}} ?
???????????????????????????
(1 row)
Run Code Online (Sandbox Code Playgroud)
从文档:
-(给定text参数):从左操作数中删除键/值对或字符串元素.键/值对基于其键值进行匹配.-(给定int参数):删除具有指定索引的数组元素(从结尾开始的负整数计数).如果顶级容器不是数组,则会引发错误.#-:删除具有指定路径的字段或元素(对于JSON数组,从末尾开始计算负整数)