对现有 JSON 文档进行镜像:
{
"first": "data",
"second": [1,2,3]
}
当我尝试执行时:
JSON_ARRAY_APPEND(doc,'$.third',4)
我希望 mysql 将参数创建为空数组并将我的元素添加到该数组中,结果是:
{
"first": "data",
"second": [1,2,3],
"third": [4]
}
然而事实并非如此。我试图在 UPDATE 查询中执行此操作,以使用类似于以下内容的方式将数据添加到数据库中:
UPDATE mytable
SET myjson=JSON_ARRAY_APPEND(myjson,'$.third',4)
WHERE ...
我正在使用 mysql 8.0.16,如果这有什么区别的话。我没有收到任何错误,只是 0 行受到影响
最佳答案
您的 JSON
不是数组,因此您可以考虑使用 JSON_MERGE_PATCH()
函数,而不是 JSON_ARRAY_APPEND()
键并不重要:
UPDATE mytable
SET myjson = JSON_MERGE_PATCH(myjson, '{"third": [4]}')
根据Normalization原则 ;为了使查找更加高效,MySQL 还会对 JSON 对象的键进行排序。您应该注意,此排序的结果可能会发生变化,并且不能保证在各个版本之间保持一致。
关于mysql - 当 JSON 文档中不存在路径时如何使用 JSON_ARRAY_APPEND?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59309664/