*Redis JSON.MERGE 命令

JSON.MERGE 在 RedisJSON 中将一个 JSON 值合并到指定路径,支持深度合并。


*语法

JSON.MERGE key path value

*参数说明

参数 类型 必填 说明
key String JSON 文档键名
path String JSONPath 路径
value String 要合并的 JSON 值

*返回值

  • OK:合并成功
  • Error:路径无效或类型不匹配

*时间复杂度

O(N),N 为合并的 JSON 值大小


*示例

*基本合并

> JSON.SET doc $ '{"a": 1, "b": {"c": 2}}'
OK
> JSON.MERGE doc $ '{"b": {"d": 3}}'
OK
> JSON.GET doc
"{\"a\":1,\"b\":{\"c\":2,\"d\":3}}"

*覆盖合并

> JSON.MERGE doc $.b '{"c": 10}'
OK
> JSON.GET doc
"{\"a\":1,\"b\":{\"c\":10,\"d\":3}}"

*常见错误

错误 原因 解决
ERR path does not exist 路径不存在 确认路径正确

*最佳实践

  • 使用深度合并更新嵌套对象
  • 注意合并会覆盖同名属性
  • 用于增量更新 JSON 文档

*FAQ

Q1: JSON.MERGE 和 JSON.SET 有什么区别? A: JSON.SET 完全替换;JSON.MERGE 深度合并对象。

Q2: 合并数组会怎样? A: 数组会被完全替换,不会合并元素。

Q3: 可以合并到不存在的路径吗? A: 可以,会创建路径和值。