*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: 可以,会创建路径和值。