JSON.ARRPOP
Syntax
JSON.ARRPOP key [path [index]]
Time complexity: O(N) when path is evaluated to a single value where N is the size of the array and the specified index is not the last element, O(1) when path is evaluated to a single value and the specified index is the last element, or O(N) when path is evaluated to multiple values, where N is the size of the key
Remove and return an element from the index in the array
Required arguments
key
is key to modify.
index
is position in the array to start popping from. Default is -1
, meaning the last element. Out-of-range indexes round to their respective array ends. Popping an empty array returns null.
Optional arguments
path
is JSONPath to specify. Default is root $
.
Return
JSON.ARRPOP
returns an array of bulk string replies for each path, each reply is the popped JSON value, or nil
, if the matching JSON value is not an array. For more information about replies, see Redis serialization protocol specification.
Examples
Pop a value from an index and insert a new value
Create two headphone products with maximum sound levels.
dragonfly> 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
Get all maximum values for the second product.
dragonfly> JSON.GET key $[1].max_level
"[[80,90,100,120]]"
Update the max_level
field of the product: remove an unavailable value and add a newly available value.
dragonfly> JSON.ARRPOP key $[1].max_level 0
1) "80"
Get the updated array.
dragonfly> JSON.GET key $[1].max_level
"[[90,100,120]]"
Now insert a new lowest value.
dragonfly> JSON.ARRINSERT key $[1].max_level 0 85
1) (integer) 4
Get the updated array.
dragonfly> JSON.GET key $[1].max_level
"[[85,90,100,120]]"
See also
JSON.ARRAPPEND
| JSON.ARRINDEX