本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
JSON.MSET
支持 Valkey 版本 8.1 及更高版本。
为多个密钥设置 JSON 值。该操作是原子的。要么设置所有值,要么未设置任何值。
语法
JSON.MSET key path json [ key path json ... ]
如果路径调用对象成员:
如果父元素不存在,该命令将返回 NONEXISTENT 错误。
如果父元素存在但不是对象,该命令将返回 ERROR。
如果父元素存在并且是对象:
如果成员不存在,当且仅当父对象是路径中的最后一个子对象时,才会将新成员附加到父对象。否则,该命令将返回 NONEXISTENT 错误。
如果成员存在,则其值将替换为 JSON 值。
如果路径调用数组索引:
如果父元素不存在,该命令将返回 NONEXISTENT 错误。
如果父元素存在但不是数组,该命令将返回 ERROR。
如果父元素存在但索引超出界限,该命令返回 OUTOFBOUNDARIES 错误。
如果父元素存在且索引有效,该元素将被新的 JSON 值替换。
如果路径调用对象或数组,该值(对象或数组)将被新的 JSON 值替换。
Return
简单的字符串回复:如果操作成功,则为 “OK”。
简单错误回复:如果操作失败。
示例
增强的路径语法:
127.0.0.1:6379> JSON.MSET k1 . '[1,2,3,4,5]' k2 . '{"a":{"a":1, "b":2, "c":3}}' k3 . '{"a": [1,2,3,4,5]}' OK 127.0.0.1:6379> JSON.GET k1 "[1,2,3,4,5]" 127.0.0.1:6379> JSON.GET k2 "{\"a\":{\"a\":1,\"b\":2,\"c\":3}}" 127.0.0.1:6379> JSON.MSET k2 $.a.* '0' k3 $.a[*] '0' OK 127.0.0.1:6379> JSON.GET k2 "{\"a\":{\"a\":0,\"b\":0,\"c\":0}}" 127.0.0.1:6379> JSON.GET k3 "{\"a\":[0,0,0,0,0]}"
受限的路径语法:
127.0.0.1:6379> JSON.MSET k1 . '{"name": "John","address": {"street": "123 Main St","city": "Springfield"},"phones": ["555-1234","555-5678"]}' OK 127.0.0.1:6379> JSON.MSET k1 .address.street '"21 2nd Street"' k1 .address.city '"New York"' OK 127.0.0.1:6379> JSON.GET k1 .address.street "\"21 2nd Street\"" 127.0.0.1:6379> JSON.GET k1 .address.city "\"New York\""