sql - 将 JSON 对象添加到 Postgres 中的特定键
问题描述
我有一个具有这种结构的 JSON:
[
{
"myKey":[
{
"value":1
},
{
"value":2
}
],
"secondKey":[
{
"value":1
},
{
"value":2
}
]
}
]
而且我需要添加评估密钥的对象,例如,myKey
添加:
[
{
"myKey":[
{
"value":1
},
{
"value":2
},
{
"new value":3
}
],
"secondKey":[
{
"value":1
},
{
"value":2
}
]
}
]
考虑到我只是使用 postgres 选择和程序,正确的方法是什么。
解决方案
jsonb_set
与与 . 连接的原始myKey
数组一起使用{"new value":3}
。CTEt(j)
仅用于演示。
with t(j) as ( values (
'[{
"myKey":[{"value":1}, {"value":2}], "secondKey":[{"value":1},{"value":2}]
}]'::jsonb))
SELECT jsonb_set(j, '{0, myKey}', j->0->'myKey' || '{"new value":3}')
FROM t;
结果:
[
{
"myKey": [
{
"value": 1
},
{
"value": 2
},
{
"new value": 3
}
],
"secondKey": [
{
"value": 1
},
{
"value": 2
}
]
}
]
您可能更喜欢使用jsonb_build_object('new value', 3)
而不是'{"new value":3}'
.
推荐阅读
- python - 在 driver.get() 中添加撇号
- python - 如果我仅从 flask-sqlalchemy 的一侧指定 OneToMany 关系会发生什么?
- applescript - Applescript - 如果应用程序的“主”窗口不在前面,我如何影响它?
- python - 循环遍历目录和 cd 到每个目录下的第一个目录
- python - MySQL 查询结果以一列为键存储在字典中
- c# - C#从动态表中获取第一行
- php - CURL 得到 403 禁止
- python - 尝试用beautifulsoup抓取时出现python循环错误
- python - 如何使用美丽的汤提取链接的最后修改日期
- flutter-dependencies - 升级flutter后包不兼容版本