有jsonB的大概结构:
“一”:{ “结果”:10, “价值观”: [ {“日期”:“2024'-11-10”, “问题”:5}, “日期”:“2024'-11-11”, “问题”:10} ]
您需要向值字段添加另一个对象。 {“日期”:“2024'-11-12”, “问题”:1}
而且它起作用了 “一”:{ “结果”:10, “价值观”: [ {“日期”:“2024'-11-10”, “问题”:5}, “日期”:“2024'-11-11”, “问题”:10}, “日期”:“2024'-11-12”, “问题”:1} ]
我找不到解决办法
有多种方法可以实现所描述的结果。一种方法是使用
JSONB_INSERT
追加到 values
数组。
WITH
t (test_value) AS (
VALUES
('{
"a": {
"result": 10,
"values": [
{
"date": "2024-11-10",
"question": 5
},
{
"date": "2024-11-11",
"question": 10
}
]
}
}'::JSONB
)
)
SELECT
JSONB_INSERT(
t.test_value,
'{a, values, -1}',
'{"date": "2024-11-12", "question": 1}',
TRUE
)
FROM
t;
对
JSONB_INSERT
的调用用于查找 values
数组,并在最后一个元素之后插入新的 JSONB 对象(请参阅 表 9.49.JSON 处理函数,了解“JSONB_INSERT”的说明)。
结果是:
{
"a": {
"result": 10,
"values": [
{
"date": "2024-11-10",
"question": 5
},
{
"date": "2024-11-11",
"question": 10
},
{
"date": "2024-11-12",
"question": 1
}
]
}
}
此方法应该适用于所有当前支持的 PostgreSQL 版本(使用 v16 和 v17 进行测试)。