JSON.ARRINSERT
JSON.ARRINSERT key path index value [value ...]
- Available in:
- Redis Open Source / JSON 1.0.0
- Time complexity:
- O(N) when path is evaluated to a single value where N is the size of the array, O(N) when path is evaluated to multiple values, where N is the size of the key
- ACL categories:
-
@json
,@write
,@slow
,
Insert the json
values into the array at path
before the index
(shifts to the right)
Required arguments
key
is key to modify.
value
is one or more values to insert in one or more arrays.
'"silver"'
. For more detailed use, see Examples.index
is position in the array where you want to insert a value. The index must be in the array's range. Inserting at index
0 prepends to the array. Negative index values start from the end of the array.
Optional arguments
path
is JSONPath to specify. Default is root $
.
Examples
Add new colors to a specific place in a list of product colors
Create a document for noise-cancelling headphones in black and silver colors.
redis> JSON.SET item:1 $ '{"name":"Noise-cancelling Bluetooth headphones","description":"Wireless Bluetooth headphones with noise-cancelling technology","connection":{"wireless":true,"type":"Bluetooth"},"price":99.98,"stock":25,"colors":["black","silver"]}'
OK
Add color blue
to the end of the colors
array. JSON.ARRAPEND
returns the array's new size.
redis> JSON.ARRAPPEND item:1 $.colors '"blue"'
1) (integer) 3
Return the new length of the colors
array.
redis> JSON.GET item:1
"{\"name\":\"Noise-cancelling Bluetooth headphones\",\"description\":\"Wireless Bluetooth headphones with noise-cancelling technology\",\"connection\":{\"wireless\":true,\"type\":\"Bluetooth\"},\"price\":99.98,\"stock\":25,\"colors\":[\"black\",\"silver\",\"blue\"]}"
Get the list of colors for the product.
redis> JSON.GET item:1 '$.colors[*]'
"[\"black\",\"silver\",\"blue\"]"
Insert two more colors after the second color. You now have five colors.
redis> JSON.ARRINSERT item:1 $.colors 2 '"yellow"' '"gold"'
1) (integer) 5
Get the updated list of colors.
redis> JSON.GET item:1 $.colors
"[[\"black\",\"silver\",\"yellow\",\"gold\",\"blue\"]]"
Return information
With $
-based path argument: Array reply of integer replies or null replies, where each element is the array's new size, or null
if the matching value is not an array.
With .
-based path argument: Integer reply representing the array's new size, or null reply if the matching value is not an array.
See also
JSON.ARRAPPEND
| JSON.ARRINDEX