JSON.ARRINDEX

搜索数组中第一次出现的 JSON 值

语法

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

引入版本:1.0.0

复杂度摘要:O(N)

搜索数组中第一次出现的 JSON 值

示例

必需参数

key

解析的关键。

path

是JSONPath来指定。

value

是在一个或多个数组中查找其索引的值。

[!NOTE] 关于在 JSON 命令中使用字符串 要将字符串指定为要索引的数组值,请使用一组附加的单引号将带引号的字符串括起来。示例:'"silver"'。更详细的使用请参见示例。

可选参数

start

是在要搜索的数组切片中指定的包含起始值。默认为 0。

stop

是在要搜索的数组切片中指定的独占停止值,包括最后一个元素。默认为 0。负值被解释为从末尾开始。

[!NOTE] 关于超出范围的索引 超出范围的索引四舍五入到数组的开头和结尾。反向索引范围(例如从 1 到 0 的范围)返回 unfound 或 -1。

示例

Find the specific place of a color in a list of product colors

创建黑色和银色降噪耳机的文档。

redis> JSON.SET item:1 $ '{"name":"降噪蓝牙耳机","description":"具有降噪技术的无线蓝牙耳机","connection":{"wireless":true,"type":"蓝牙"},"price":99.98,"stock":25,"colors":["black","silver"]}' OK

将颜色 blue 添加到 colors 数组的末尾。 JSON.ARRAPEND 返回数组的新大小。

redis> JSON.ARRAPPEND item:1 $.colors '"blue"' 1) (整数) 3

返回 colors 数组的新长度。

redis> JSON.GET item:1 "{\"name\":\"降噪蓝牙耳机\",\"description\":\"带降噪功能的无线蓝牙耳机技术\",\"连接\":{\"无线\":true,\"类型\":\"蓝牙\"},\"价格\":99.98,\"库存\":25,\"颜色\":[\"黑色\",\"银色\",\"蓝色\"]}"

获取产品的颜色列表。

redis> JSON.GET item:1 '$.colors[*]' "[\"黑色\",\"银色\",\"蓝色\"]"

在第二种颜色之后再插入两种颜色。您现在有五种颜色。

redis> JSON.ARRINSERT item:1 $.colors 2 '"yellow"' '"gold"' 1) (整数) 5

获取更新的颜色列表。

redis> JSON.GET item:1 $.colors "[[\"黑色\",\"银色\",\"黄色\",\"金色\",\"蓝色\"]]"

找到颜色silver所在的地方。

redis> JSON.ARRINDEX item:1 $..colors '"silver"' 1) (整数) 1

Redis Software 与 Redis Cloud 兼容性

Redis
软件
Redis
Cloud
说明
✅ 支持
✅ 灵活且每年一次
✅ 免费和固定

返回值

RESP2

使用基于 $ 的路径参数:数组回复 或 整数回复 或 空回复,其中每个元素是数组中的第一个位置,如果未找到,则为 -1,如果匹配值不是数组,则为 null。

使用基于 . 的路径参数:整数回复 代表数组中的第一个位置,如果未找到,则为 -1,如果匹配值不是数组,则为 空回复。

RESP3

使用基于 $ 的路径参数(默认):数组回复 或 整数回复 或 空回复,其中每个元素是数组中的第一个位置,如果未找到,则为 -1,如果匹配值不是数组,则为 null。

使用基于 . 的路径参数:整数回复 代表数组中的第一个位置,如果未找到,则为 -1,如果匹配值不是数组,则为 空回复。

参见

JSON.ARRAPPEND | JSON.ARRINSERT

资料来源:Redis 官方 JSON.ARRINDEX 文档;中文内容参考 Redis 文档许可。