Skip to content

Latest commit

 

History

History
48 lines (36 loc) · 1.31 KB

json.set.md

File metadata and controls

48 lines (36 loc) · 1.31 KB

Sets the JSON value at path in key.

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.

Adds a key (with its respective value) to a JSON Object (in a RedisJSON data type key) only if it is the last child in the path, or it is the parent of a new child being added in the path. The optional subcommands modify this behavior for both new RedisJSON data type keys as well as the JSON Object keys in them:

  • NX - only set the key if it does not already exist
  • XX - only set the key if it already exists

@return

@simple-string-reply - OK if executed correctly, or @nil-reply if the specified NX or XX conditions were not met.

@examples

Replacing an existing value

redis> JSON.SET doc $ '{"a":2}'
OK
redis> JSON.SET doc $.a '3'
OK
redis> JSON.GET doc $
"[{\"a\":3}]"

Adding a new value

redis> JSON.SET doc $ '{"a":2}'
OK
redis> JSON.SET doc $.b '8'
OK
redis> JSON.GET doc $
"[{\"a\":2,\"b\":8}]"

Updating multi paths

redis> JSON.SET doc $ '{"f1": {"a":1}, "f2":{"a":2}}'
OK
redis> JSON.SET doc $..a 3
OK
redis> json.get doc
"{\"f1\":{\"a\":3},\"f2\":{\"a\":3}}"