*Redis JSON.ARRINDEX 命令

JSON.ARRINDEX 在 RedisJSON 中查找指定值在数组中的索引位置。


*语法

JSON.ARRINDEX key path value [start [stop]]

*参数说明

参数 类型 必填 说明
key String JSON 文档键名
path String JSONPath 路径
value String 要查找的 JSON 值
start Integer 起始索引(含),默认 0
stop Integer 结束索引(含),默认数组末尾

*返回值

  • Integer:值在数组中的索引,-1 表示未找到
  • Error:路径不存在或目标不是数组

*时间复杂度

O(N),N 为数组长度


*示例

*基本用法

> JSON.SET doc $ '{"arr": [1, 2, 3, 4, 5]}'
OK
> JSON.ARRINDEX doc $.arr 3
(integer) 2
> JSON.ARRINDEX doc $.arr 10
(integer) -1

*指定范围

> JSON.ARRINDEX doc $.arr 3 1 3
(integer) 2
> JSON.ARRINDEX doc $.arr 3 3 4
(integer) -1

*常见错误

错误 原因 解决
ERR path does not exist 路径不存在 确认路径正确
ERR path not an array 目标不是数组 确认路径指向数组

*最佳实践

  • 使用范围缩小搜索范围
  • 对于复杂对象,确保 value 完全匹配
  • 返回 -1 时确认值确实不存在

*FAQ

Q1: 支持部分匹配吗? A: 不支持,需要完全匹配。

Q2: 数组中有多个相同值会返回哪个? A: 返回第一个匹配的索引。

Q3: 支持负索引吗? A: 不支持,start 和 stop 必须是正整数。