content/commands/json.arrinsert.md
Insert the json values into the array at path before the index (shifts to the right)
is key to modify.
</details> <details open><summary><code>value</code></summary>is one or more values to insert in one or more arrays.
{{% alert title="About using strings with JSON commands" color="warning" %}}
To specify a string as an array value to insert, wrap the quoted string with an additional set of single quotes. Example: '"silver"'. For more detailed use, see Examples.
{{% /alert %}}
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.
is JSONPath to specify. Default is root $.
Create a document for noise-cancelling headphones in black and silver colors.
{{< highlight bash >}} 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 {{< / highlight >}}
Add color blue to the end of the colors array. JSON.ARRAPEND returns the array's new size.
{{< highlight bash >}} redis> JSON.ARRAPPEND item:1 $.colors '"blue"'
Return the new length of the colors array.
{{< highlight bash >}} 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"]}" {{< / highlight >}}
Get the list of colors for the product.
{{< highlight bash >}} redis> JSON.GET item:1 '$.colors[*]' "["black","silver","blue"]" {{< / highlight >}}
Insert two more colors after the second color. You now have five colors.
{{< highlight bash >}} redis> JSON.ARRINSERT item:1 $.colors 2 '"yellow"' '"gold"'
Get the updated list of colors.
{{< highlight bash >}} redis> JSON.GET item:1 $.colors "[["black","silver","yellow","gold","blue"]]" {{< / highlight >}}
</details>| Redis Software | Redis Cloud | <span style="min-width: 9em; display: table-cell">Notes</span> | |:----------------------|:-----------------|:------| | <span title="Supported">✅ Supported</span> | <span title="Supported">✅ Flexible & Annual</span> <span title="Supported">✅ Free & Fixed</nobr></span> | |
{{< multitabs id="json-arrinsert-return-info" tab1="RESP2" tab2="RESP3" >}}
With $-based path argument: [Array reply]({{< relref "/develop/reference/protocol-spec#arrays" >}}) of [integer replies]({{< relref "/develop/reference/protocol-spec#integers" >}}) or [null replies]({{< relref "/develop/reference/protocol-spec#nulls" >}}), 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]({{< relref "/develop/reference/protocol-spec#integers" >}}) representing the array's new size, or [null reply]({{< relref "/develop/reference/protocol-spec#nulls" >}}) if the matching value is not an array.
-tab-sep-
With $-based path argument (default): [Array reply]({{< relref "/develop/reference/protocol-spec#arrays" >}}) of [integer replies]({{< relref "/develop/reference/protocol-spec#integers" >}}) or [null replies]({{< relref "/develop/reference/protocol-spec#nulls" >}}), 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]({{< relref "/develop/reference/protocol-spec#integers" >}}) representing the array's new size, or [null reply]({{< relref "/develop/reference/protocol-spec#nulls" >}}) if the matching value is not an array.
{{< /multitabs >}}
[JSON.ARRAPPEND]({{< relref "commands/json.arrappend/" >}}) | [JSON.ARRINDEX]({{< relref "commands/json.arrindex/" >}})