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.
[Examples](#examples)
## 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](/docs/reference/protocol-spec).
## Examples
Add a new values in multiple keys
{{< highlight bash >}}
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\":3},\"f2\":{\"a\":3}}"
{{< / highlight >}}
## See also
`JSON.SET` | `JSON.MGET` | `JSON.GET`
## Related topics
* [RedisJSON](/docs/stack/json)
* [Index and search JSON documents](/docs/stack/search/indexing_json)