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 文档许可。