JSON.ARRPOP
语法
JSON.ARRPOP key [path [index]]
- 可用版本
- Redis Open Source / JSON 1.0.0
- 时间复杂度
- 当 path 计算为单个值且指定索引不是最后一个元素时为 O(N),其中 N 是数组大小;当 path 计算为单个值且指定索引是最后一个元素时为 O(1);当 path 计算为多个值时为 O(N),其中 N 是键的大小。
- ACL 类别
-
@json,@write,@slow,
移除并返回数组中指定索引位置的元素
必需参数
key
是要修改的键。
index
是要开始弹出的数组中的位置。默认为 -1,表示最后一个元素。超出范围的索引会四舍五入到其对应的数组末尾。从空数组弹出会返回 null。
可选参数
path
要指定的 JSONPath。默认为根路径 $。
返回值
JSON.ARRPOP 为每个 path 返回一个批量字符串回复的数组,每个回复是被弹出的 JSON 值,如果匹配的 JSON 值不是一个数组,则返回 nil。有关回复的更多信息,请参阅 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