有没有一种方法可以删除/更新嵌套的JSON键对象(而不是数组) 例如以下JSON:
{
"top": {
"nested": {
"leaf": 1
}
}
}
我该如何删除/更新叶子元素?
我尝试了:
SELECT jsonb '{"top": {"nested": {"leaf" : 1}}' - '{top,nested,leaf}'
但没有成功。
有没有一种方法可以删除/更新嵌套的JSON键对象(而不是数组) 例如以下JSON:
{
"top": {
"nested": {
"leaf": 1
}
}
}
我该如何删除/更新叶子元素?
我尝试了:
SELECT jsonb '{"top": {"nested": {"leaf" : 1}}' - '{top,nested,leaf}'
但没有成功。
您需要使用 #-
运算符,而不是 -
:
SELECT jsonb '{"top": {"nested": {"leaf" : 1}}}' #- '{top,nested,leaf}';
┌─────────────────────────┐
│ ?column? │
├─────────────────────────┤
│ {"top": {"nested": {}}} │
└─────────────────────────┘
(1 row)
来自文档:
-
(针对text
参数):从左操作数中删除键/值对或字符串元素。键/值对基于其键值进行匹配。-
(针对int
参数):删除具有指定索引的数组元素(负整数从结尾开始计数)。如果顶级容器不是数组,则会引发错误。#-
:删除具有指定路径的字段或元素(对于JSON数组,负整数从结尾开始计数)
j
的表t
,你可以执行SELECT j -# '{to,remove}' FROM t
。 - Marth