Skip to main content

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

Examples

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