You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何向已有的JSON文档中插入数组类型的属性值?

如何用JSON_SET()直接设置JSON字段的数组类型值

针对存储JSON文档的字段,我们通常用JSON_SET()为JSON文档中的键赋值,该函数原生支持直接赋值的类型包括null、true、false、数值和字符串,但很多人不清楚如何直接设置数组类型的值。

如果直接把数组内容用字符串传入,最终存储时会被自动转换为字符串类型,无法得到预期的数组结构。官方文档中针对JSON_INSERT()的示例(和JSON_SET()逻辑一致)也只展示了这个错误场景,没有给出明确解决方案。

很多人会想到用分步操作的临时方案实现数组赋值:
首先执行:

JSON_SET(col, '$.field', "first value")
-- 执行后结果:{"field": "first value"}

之后再执行:

JSON_ARRAY_APPEND(col, '$.field', "second value")
-- 执行后结果:{"field": ["first value", "second value"]}

但这个方案缺陷很明显:无法直接设置空数组、单元素数组这类元素个数少于2的数组结构,需要额外加判断逻辑,非常繁琐。


正确解决方案

直接用JSON_ARRAY()函数把数组元素包裹后作为值传给JSON_SET()即可,支持任意元素个数的数组设置:

  • 设置空数组:
JSON_SET(col, '$.field', JSON_ARRAY())
-- 结果:{"field": []}
  • 设置单元素数组:
JSON_SET(col, '$.field', JSON_ARRAY("first value"))
-- 结果:{"field": ["first value"]}
  • 设置多元素数组,直接在JSON_ARRAY()里按顺序传入多个参数即可:
JSON_SET(col, '$.field', JSON_ARRAY("first value", "second value", "third value"))
-- 结果:{"field": ["first value", "second value", "third value"]}

如果要插入嵌套数组或者JSON对象作为数组元素,配合JSON_OBJECT()函数使用即可,不需要拆成多步操作。

内容的提问来源于stack exchange,提问作者Guss

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 01:39:06