JSON.ARRINDEX

用法
JSON.ARRINDEX key path json-scalar [ start ] [ end ]
复杂度
O(N),其中 N 是数组的长度。
模块
valkey-json
自模块版本
1.0.0
ACL 类别
@read, @fast, @json

在给定路径的数组中查找标量 JSON 值首次出现的位置。

  • 超出范围的错误通过将索引四舍五入到数组的开始和结束位置来处理。
  • 如果 start > end,则返回 -1(未找到)。

示例

增强路径语法

127.0.0.1:6379> JSON.SET k1 . '[[], ["a"], ["a", "b"], ["a", "b", "c"]]'
OK
127.0.0.1:6379> JSON.ARRINDEX k1 $[*] '"b"'
1) (integer) -1
2) (integer) -1
3) (integer) 1
4) (integer) 1

受限路径语法

127.0.0.1:6379> JSON.SET k1 . '{"children": ["John", "Jack", "Tom", "Bob", "Mike"]}'
OK
127.0.0.1:6379> JSON.ARRINDEX k1 .children '"Tom"'
(integer) 2

RESP2 回复

  • 如果路径是增强语法

    • 数组回复:整数数组。每个值是路径中数组中匹配元素的索引。如果未找到,则值为 -1。

    • 空回复:对于值不是数组的每个路径。

  • 如果路径是受限语法

    • 整数回复:匹配元素的索引,如果未找到则为 -1。
  • 简单错误回复:

    • 如果路径不存在。

    • 如果路径上的值不是数组(仅限受限语法)。

RESP3 回复

  • 如果路径是增强语法

    • 数组回复:整数数组。每个值是路径中数组中匹配元素的索引。如果未找到,则值为 -1。

    • 空回复:对于值不是数组的每个路径。

  • 如果路径是受限语法

    • 整数回复:匹配元素的索引,如果未找到则为 -1。
  • 简单错误回复:

    • 如果路径不存在。

    • 如果路径上的值不是数组(仅限受限语法)。