JSON.SET

语法
JSON.SET key path value [NX | XX]
可用
Redis Stack / JSON 1.0.0
时间复杂度
当路径评估为单个值时为 O(M+N),其中 M 是原始值的大小(如果存在),而 N 是新值的大小,当路径评估为多个值时为 O(M+N),其中 M 是键的大小,而 N 是新值的大小乘以键中原始值的个数

key 中的 path 设置 JSON 值

示例

必需参数

key

是要修改的键。

path

是用于指定的 JSONPath。默认情况下为根 $。对于新的 Redis 键,path 必须是根。对于现有键,当整个 path 存在时,它包含的值将替换为 json 值。对于现有键,当 path 存在时,除了最后一个元素外,将使用 json 值添加一个新的子级。

仅当它是 path 中的最后一个子级,或者它是 path 中正在添加的新子级的父级时,才将键(及其相应的值)添加到 JSON 对象(在 RedisJSON 数据类型键中)。可选参数 NXXX 会修改此行为,适用于新的 RedisJSON 数据类型键以及其中的 JSON 对象键。

value

是要在指定路径设置的值。

可选参数

NX

仅当键不存在时才设置键。

XX

仅当键已存在时才设置键。

返回值

JSET.SET 返回一个简单的字符串回复:OK 表示执行成功,或者 nil 表示指定的 NXXX 条件未满足。有关回复的更多信息,请参阅 Redis 序列化协议规范.

示例

替换现有值
redis> JSON.SET doc $ '{"a":2}'
OK
redis> JSON.SET doc $.a '3'
OK
redis> JSON.GET doc $
"[{\"a\":3}]"
添加新值
redis> JSON.SET doc $ '{"a":2}'
OK
redis> JSON.SET doc $.b '8'
OK
redis> JSON.GET doc $
"[{\"a\":2,\"b\":8}]"
更新多路径
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}}"

另请参阅

JSON.GET | JSON.MGET


RATE THIS PAGE
Back to top ↑