JSON.MERGE key path value
@json,
@write,
@slow,
Merge a given JSON value into matching paths. Consequently, JSON values at matching paths are updated, deleted, or expanded with new children.
This command complies with RFC7396 Json Merge Patch
keyis the key to merge into.
pathspecifies the JSONPath. For non-existing keys the path must be $. For existing keys, for each matched path, the value that matches the path is merged with the JSON value. For existing keys, when the path exists, except for the last element, a new child is added with the JSON value.
valueis the JSON value to merge with at the specified path. Merging is done according to the following rules per JSON value in the value argument while considering the corresponding original value if it exists:
null value deletes the keyJSON.MERGE provides four different behaviors to merge changes on a given key: create a non-existent path, update an existing path with a new value, delete an existing path, or replace an array with a new array
redis> JSON.SET doc $ '{"a":2}'
OK
redis> JSON.MERGE doc $.b '8'
OK
redis> JSON.GET doc $
"[{\"a\":2,\"b\":8}]"redis> JSON.SET doc $ '{"a":2}'
OK
redis> JSON.MERGE doc $.a '3'
OK
redis> JSON.GET doc $
"[{\"a\":3}]"redis> JSON.SET doc $ '{"a":2}'
OK
redis> JSON.MERGE doc $ '{"a":null}'
OK
redis> JSON.GET doc $
"[{}]"redis> JSON.SET doc $ '{"a":[2,4,6,8]}'
OK
redis> JSON.MERGE doc $.a '[10,12]'
OK
redis> JSON.GET doc $
"[{\"a\":[10,12]}]"redis> JSON.SET doc $ '{"f1": {"a":1}, "f2":{"a":2}}'
OK
redis> JSON.GET doc
"{\"f1\":{\"a\":1},\"f2\":{\"a\":2}}"
redis> JSON.MERGE doc $ '{"f1": null, "f2":{"a":3, "b":4}, "f3":[2,4,6]}'
OK
redis> JSON.GET doc
"{\"f2\":{\"a\":3,\"b\":4},\"f3\":[2,4,6]}"| Redis Enterprise |
Redis Cloud |
Notes |
|---|---|---|
| ❌ Standard ❌ Active-Active |
❌ Standard ❌ Active-Active |
One of the following:
OK if executed correctly.JSON.GET | JSON.MGET | JSON.SET | JSON.MSET