JSON.ARRPOP
语法
JSON.ARRPOP key [path [index]]
- 可用於
- Redis 堆栈 / JSON 1.0.0
- 时间复杂度
- 当路径计算为单个值时为 O(N),其中 N 是数组的大小,并且指定的索引不是最后一个元素;当路径计算为单个值并且指定的索引是最后一个元素时为 O(1);或者当路径计算为多个值时为 O(N),其中 N 是键的大小
从数组中的索引中删除并返回一个元素
必需参数
键
是修改的键。
索引
是数组中开始弹出位置的索引。默认值为 -1
,表示最后一个元素。超出范围的索引将舍入到相应的数组末尾。弹出空数组将返回空。
可选参数
路径
是指定 JSONPath 的路径。默认值为根 $
。
返回值
JSON.ARRPOP
返回一个 数组,每个路径的批量字符串回复,每个回复是弹出的 JSON 值,或 nil
,如果匹配的 JSON 值不是数组。有关回复的更多信息,请参见 Redis 序列化协议规范。
示例
从索引中弹出一个值并插入一个新值
创建两个具有最大声级值的耳机产品。
redis> JSON.SET key $ '[{"name":"Healthy headphones","description":"Wireless Bluetooth headphones with noise-cancelling technology","connection":{"wireless":true,"type":"Bluetooth"},"price":99.98,"stock":25,"colors":["black","silver"],"max_level":[60,70,80]},{"name":"Noisy headphones","description":"Wireless Bluetooth headphones with noise-cancelling technology","connection":{"wireless":true,"type":"Bluetooth"},"price":99.98,"stock":25,"colors":["black","silver"],"max_level":[80,90,100,120]}]'
OK
获取第二款产品的全部最大值。
redis> JSON.GET key $.[1].max_level
"[[80,90,100,120]]"
更新产品的 max_level
字段:删除不可用的值并添加一个新可用的值。
redis> JSON.ARRPOP key $.[1].max_level 0
1) "80"
获取更新后的数组。
redis> JSON.GET key $.[1].max_level
"[[90,100,120]]"
现在插入一个新的最低值。
redis> JSON.ARRINSERT key $.[1].max_level 0 85
1) (integer) 4
获取更新后的数组。
redis> JSON.GET key $.[1].max_level
"[[85,90,100,120]]"
另请参阅
JSON.ARRAPPEND
| JSON.ARRINDEX