本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
JSON.ARRINDEX
在路径的数组中搜索首次出现的标量 JSON 值。
超出范围错误的处理方法是将索引四舍五入到数组的开头和结尾。
如果 start > end,则返回 -1(未找到)。
语法
JSON.ARRINDEX <key> <path> <json-scalar> [start [end]]
密钥(必需)— JSON 文档类型的 Redis 密钥
路径(必需)— 一个 JSON 路径
json-scalar(必需)— 要搜索的标量值;JSON 标量指的是不是对象或数组的值。也就是说,字符串、数字、布尔值和 null 是标量值。
start(可选)— 起始索引(含)。如果未提供,则默认为 0。
end(可选)— 结束索引,不包括。如果未提供,则默认为 0,这意味着包含最后一个元素。0 或 -1 表示包含最后一个元素。
返回值
如果路径是增强的语法:
整数数组。每个值都是路径处数组中匹配元素的索引。如果未找到,则值为 -1。
-
如果值不是数组,则其对应的返回值为 null。
如果路径是受限语法:
整数,匹配元素的索引;如果未找到,则为 -1。
-
WRONGTYPE如果路径中的值不是数组,则为错误。
示例
增强路径语法:
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