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)