JSON.MSET
JSON.MSET key path value [key path value ...]
- Available in:
- Redis Stack / JSON 2.6.0
- Time complexity:
- O(K*(M+N)) where k is the number of keys in the command, when path is evaluated to a single value where M is the size of the original value (if it exists) and N is the size of the new value, or O(K*(M+N)) when path is evaluated to multiple values where M is the size of the key and N is the size of the new value * the number of original values in the key
Set or update one or more JSON values according to the specified key
-path
-value
triplets
JSON.MSET
is atomic, hence, all given additions or updates are either applied or not. It is not possible for clients to see that some of the keys were updated while others are unchanged.
A JSON value is a hierarchical structure. If you change a value in a specific path - nested values are affected.
Required arguments
key
is key to modify.
path
is JSONPath to specify. For new Redis keys the path
must be the root. For existing keys, when the entire path
exists, the value that it contains is replaced 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.
value
is value to set at the specified path
Return value
JSET.MSET returns a simple string reply: OK
if executed correctly or error
if fails to set the new values
For more information about replies, see Redis serialization protocol specification.
Examples
Add a new values in multiple keys
redis> JSON.MSET doc1 $ '{"a":1}' doc2 $ '{"f":{"a":2}}' doc3 $ '{"f1":{"a":0},"f2":{"a":0}}'
OK
redis> JSON.MSET doc1 $ '{"a":2}' doc2 $.f.a '3' doc3 $ '{"f1":{"a":1},"f2":{"a":2}}'
OK
redis> JSON.GET doc1 $
"[{\"a\":2}]"
redis> JSON.GET doc2 $
"[{\"f\":{\"a\":3}}]"
redis> JSON.GET doc3
"{\"f1\":{\"a\":1},\"f2\":{\"a\":2}}"
See also
JSON.SET
| JSON.MGET
| JSON.GET