What's new in Valkey 9.0? Discover new features and improvements. Read the announcement.

JSON.STRAPPEND

Append a string to the JSON strings at the specified path.

Usage
JSON.STRAPPEND key [path] json_string
Complexity
O(N) where N is the number of string values matched by the path.
Module
valkey-json
Since module version
1.0.0
ACL Categories
@write, @fast, @json

Append a string to the JSON strings at the path.

Examples

Enhanced path syntax:

127.0.0.1:6379> JSON.SET k1 $ '{"a":{"a":"a"}, "b":{"a":"a", "b":1}, "c":{"a":"a", "b":"bb"}, "d":{"a":1, "b":"b", "c":3}}'
OK
127.0.0.1:6379> JSON.STRAPPEND k1 $.a.a '"a"'
1) (integer) 2
127.0.0.1:6379> JSON.STRAPPEND k1 $.a.* '"a"'
1) (integer) 3
127.0.0.1:6379> JSON.STRAPPEND k1 $.b.* '"a"'
1) (integer) 2
2) (nil)
127.0.0.1:6379> JSON.STRAPPEND k1 $.c.* '"a"'
1) (integer) 2
2) (integer) 3
127.0.0.1:6379> JSON.STRAPPEND k1 $.c.b '"a"'
1) (integer) 4
127.0.0.1:6379> JSON.STRAPPEND k1 $.d.* '"a"'
1) (nil)
2) (integer) 2
3) (nil)

Restricted path syntax:

127.0.0.1:6379> JSON.SET k1 . '{"a":{"a":"a"}, "b":{"a":"a", "b":1}, "c":{"a":"a", "b":"bb"}, "d":{"a":1, "b":"b", "c":3}}'
OK
127.0.0.1:6379> JSON.STRAPPEND k1 .a.a '"a"'
(integer) 2
127.0.0.1:6379> JSON.STRAPPEND k1 .a.* '"a"'
(integer) 3
127.0.0.1:6379> JSON.STRAPPEND k1 .b.* '"a"'
(integer) 2
127.0.0.1:6379> JSON.STRAPPEND k1 .c.* '"a"'
(integer) 3
127.0.0.1:6379> JSON.STRAPPEND k1 .c.b '"a"'
(integer) 4
127.0.0.1:6379> JSON.STRAPPEND k1 .d.* '"a"'
(integer) 2

Replies

RESP2

  • If the path is enhanced syntax:
    • Array reply: Array of integers representing the new length of the string at each path.
    • Nil reply: For each path where the value is not a string.
  • If the path is restricted syntax:
    • Integer reply: The string's new length.
    • Integer reply: If multiple string values are selected, returns the new length of the last updated string.
  • Simple error reply:
    • if the input json argument is not a valid JSON string.
    • if the path does not exist.
    • if the value at the path is not a string (only for restricted syntax).

RESP3

  • If the path is enhanced syntax:
    • Array reply: Array of integers representing the new length of the string at each path.
    • Null reply: For each path where the value is not a string.
  • If the path is restricted syntax:
    • Integer reply: The string's new length.
    • Integer reply: If multiple string values are selected, returns the new length of the last updated string.
  • Simple error reply:
    • if the input json argument is not a valid JSON string.
    • if the path does not exist.
    • if the value at the path is not a string (only for restricted syntax).