JSON.SET
在路径中设置 JSON 值。
如果路径调用对象成员:
如果父元素不存在,该命令将返回 NONEXISTENT 错误。
如果父元素存在但不是对象,该命令将返回 ERROR。
如果父元素存在并且是对象:
如果成员不存在,当且仅当父对象是路径中的最后一个子对象时,才会将新成员附加到父对象。否则,该命令将返回 NONEXISTENT 错误。
如果成员存在,则其值将替换为 JSON 值。
如果路径调用数组索引:
如果父元素不存在,该命令将返回 NONEXISTENT 错误。
如果父元素存在但不是数组,该命令将返回 ERROR。
如果父元素存在但索引超出界限,该命令返回 OUTOFBOUNDARIES 错误。
如果父元素存在且索引有效,该元素将被新的 JSON 值替换。
如果路径调用对象或数组,该值(对象或数组)将被新的 JSON 值替换。
语法
JSON.SET <key> <path> <json> [NX | XX]
[NX | XX],其中您可以有 0 或 1 个 [NX | XX] 标识符
key(必需)– JSON 文档类型的键
path(必需)– JSON 路径。对于新的键,JSON 路径必须是根目录“.”。
NX(可选)– 如果路径是根目录,仅在键不存在时设置该值,即插入新文档。如果路径不是根目录,仅在路径不存在时设置该值,即在文档中插入一个值。
XX(可选)– 如果路径是根目录,仅在键存在时设置该值,即替换现有文档。如果路径不是根目录,则仅在路径存在时设置该值,即更新现有值。
Return
成功时使用简单字符串“OK”。
-
如果未满足 NX 或 XX 条件,则为 Null。
示例
增强的路径语法:
127.0.0.1:6379> JSON.SET k1 . '{"a":{"a":1, "b":2, "c":3}}' OK 127.0.0.1:6379> JSON.SET k1 $.a.* '0' OK 127.0.0.1:6379> JSON.GET k1 "{\"a\":{\"a\":0,\"b\":0,\"c\":0}}" 127.0.0.1:6379> JSON.SET k2 . '{"a": [1,2,3,4,5]}' OK 127.0.0.1:6379> JSON.SET k2 $.a[*] '0' OK 127.0.0.1:6379> JSON.GET k2 "{\"a\":[0,0,0,0,0]}"
受限的路径语法:
127.0.0.1:6379> JSON.SET k1 . '{"c":{"a":1, "b":2}, "e": [1,2,3,4,5]}' OK 127.0.0.1:6379> JSON.SET k1 .c.a '0' OK 127.0.0.1:6379> JSON.GET k1 "{\"c\":{\"a\":0,\"b\":2},\"e\":[1,2,3,4,5]}" 127.0.0.1:6379> JSON.SET k1 .e[-1] '0' OK 127.0.0.1:6379> JSON.GET k1 "{\"c\":{\"a\":0,\"b\":2},\"e\":[1,2,3,4,0]}" 127.0.0.1:6379> JSON.SET k1 .e[5] '0' (error) OUTOFBOUNDARIES Array index is out of bounds