【发布时间】:2021-02-03 07:01:18
【问题描述】:
假设我在 my_jsonb PostgreSQL 数据库表的列中有这样的 JSONB 数据,模式如下:
[
{
"foo": {
"bar": [
{
"baz": 1,
"qux": 2
}
]
}
},
{
"foo": {
"bar": [
{
"baz": 3,
"qux": 4
},
{
"baz": 5,
"qux": 6
}
]
}
}
]
换言之,my_jsonb 的每一列都有一个 foo 列表,该列表具有一个属性 bar,其中包含具有两个属性 baz 和 qux 的对象数组。
我现在认为 baz 属性已过时,我想将其删除以拥有此:
[
{
"foo": {
"bar": [
{
"qux": 2
}
]
}
},
{
"foo": {
"bar": [
{
"qux": 4
},
{
"qux": 6
}
]
}
}
]
我可以使用脚本在每个bar 项目中一个一个地删除这些baz 属性,但它会超长。有没有办法更新复杂的 JSONB 对象以删除子子属性而不用脚本做任何事情?
可以逐行进行(我的实际表中只有 100k 行,所以我认为迭代每一行是安全的,我唯一想要的就是 删除所有 baz属性在一行中一次)。
有可能吗?
【问题讨论】:
标签: sql postgresql jsonb