在 JSON 数组中追加一个数组
Appending an array within JSON array
我正在使用 MySQL 8
并尝试在 mysql table
中更新 JSON data type
我的 table t1
如下所示:
# id key value
1100000 key123 [{"name": "name1", "hosts": ["host123"]}]
现在,我有一个主机列表 hostlist
如下:
SET @hostlist = '["host343", "host345"]';
我想将 @hostlist
附加到 value
中的 hosts
数组 JSON 数组:
UPDATE table t1
SET t1.value = JSON_ARRAY_APPEND('[]', '$', JSON_OBJECT('hosts', @hostlist))
WHERE t1.key = 'key123';
Desired Output:
[{"name": "name1", "hosts": ["host123","host343", "host345"]}]
您需要在现有 value
中使用指向 hosts
属性 的路径并附加到该路径。
但 JSON_ARRAY_APPEND()
用于将单个值附加到数组。您需要使用 JSON_MERGE_PRESERVE()
来连接数组。然后用JSON_REPLACE()
把数组换成这个
UPDATE t1
SET value = JSON_REPLACE(t1.value, '$[0].hosts', JSON_MERGE_PRESERVE(t1.value->'$[0].hosts', @hostlist))
WHERE t1.key = 'key123';
我正在使用 MySQL 8
并尝试在 mysql table
JSON data type
我的 table t1
如下所示:
# id key value
1100000 key123 [{"name": "name1", "hosts": ["host123"]}]
现在,我有一个主机列表 hostlist
如下:
SET @hostlist = '["host343", "host345"]';
我想将 @hostlist
附加到 value
中的 hosts
数组 JSON 数组:
UPDATE table t1
SET t1.value = JSON_ARRAY_APPEND('[]', '$', JSON_OBJECT('hosts', @hostlist))
WHERE t1.key = 'key123';
Desired Output:
[{"name": "name1", "hosts": ["host123","host343", "host345"]}]
您需要在现有 value
中使用指向 hosts
属性 的路径并附加到该路径。
但 JSON_ARRAY_APPEND()
用于将单个值附加到数组。您需要使用 JSON_MERGE_PRESERVE()
来连接数组。然后用JSON_REPLACE()
把数组换成这个
UPDATE t1
SET value = JSON_REPLACE(t1.value, '$[0].hosts', JSON_MERGE_PRESERVE(t1.value->'$[0].hosts', @hostlist))
WHERE t1.key = 'key123';