【发布时间】:2020-01-29 02:19:12
【问题描述】:
我有一个 MySQL (v5.7) 数据库,它有一个名为 deals 的表,其中包含一个名为 jdeal_status 的 JSON 列。
此列包含以下格式的数据:
{
"trackIssues":[
{
"date":[
"2020-01-28T12:04:42-05:00"
],
"notes":[
{
"date":"2020-01-28T12:30:46-05:00",
"name":"Joe Robbs",
"note":"New note"
},
{
"date":"2020-01-28T17:45:29-05:00",
"name":"John Ha",
"note":"New attachment"
}
],
"value":3000,
"isResolved":false,
"issueIndex":0
},
{ ...other array objects },
]
}
我想将一个名为attachments 的新数组字段添加到trackIssues 数组(在trackIssues[0] 处),如果它不存在,或者如果它存在则追加到它。但是,我坚持只是将新字段添加到现有数组中。
我已尝试执行以下操作:
UPDATE deals set jdeal_status = JSON_ARRAY_APPEND(jdeal_status, '$.trackIssues[0]',
JSON_OBJECT(
'attachments',
JSON_OBJECT(
'date', "2020-01-28T12:04:42-05:00",
'file', 'yyyy.pdf'
)
)) WHERE id = 2;"
但它附加到 trackIssues 数组而不是 [0] 处的元素,如下所示:
{
"trackIssues":[
[
{
"date":[
"2020-01-28T12:04:42-05:00"
],
"notes":[
{
"date":"2020-01-28T12:30:46-05:00",
"name":"Joe Robbs",
"note":"New note"
},
{
"date":"2020-01-28T17:45:29-05:00",
"name":"John Ha",
"note":"New attachment"
}
],
"value":3000,
"isResolved":false,
"issueIndex":0
},
{
"attachments":{
"date":"2020-01-28T12:04:42-05:00",
"file":"yyyy.pdf"
}
}
]
]
}
而我想要这个:
"trackIssues":[
{
"date":[
"2020-01-28T12:04:42-05:00"
],
"notes":[
{
"date":"2020-01-28T12:30:46-05:00",
"name":"Joe Robbs",
"note":"New note"
},
{
"date":"2020-01-28T17:45:29-05:00",
"name":"John Ha",
"note":"New attachment"
}
],
"value":3000,
"isResolved":false,
"issueIndex":0,
"attachments":[
{
"date":"2020-01-28T12:04:42-05:00",
"file":"yyyy.pdf"
}
]
}
]
}
我不确定为什么这不起作用,因为我不确定如何指定 trackIssues 数组 ($.trackIssues[0]) 的第一个元素。我尝试过其他方法(JSON_SET),但似乎无法解决。
任何帮助都将不胜感激,包括如何在不存在时创建或在存在时追加。
【问题讨论】: