JSON.ARRINDEX

语法
JSON.ARRINDEX key path value [start [stop]]
适用版本
Redis 开源版 / JSON 1.0.0
时间复杂度
当 path 解析为单个值时为 O(N),其中 N 是数组的大小;当 path 解析为多个值时为 O(N),其中 N 是键的大小
ACL 类别
@json, @read, @slow,

在数组中搜索 JSON 值首次出现的位置

示例

必需参数

key

要解析的键。

path

要指定的 JSONPath。

value

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

关于在 JSON 命令中使用字符串
要将字符串指定为要索引的数组值,请用额外的单引号括起带引号的字符串。例如:'"silver"'。有关更详细的用法,请参阅示例

可选参数

start

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

stop

指定要搜索的数组切片中的不包含结束值,包括最后一个元素。默认值为 0。负值解释为从末尾开始。

关于越界索引
越界索引会四舍五入到数组的起始和结束位置。反向索引范围(例如从 1 到 0 的范围)返回未找到或 -1

返回值

JSON.ARRINDEX 返回一个数组,其中包含针对每个路径的整数回复,表示每个匹配路径的 JSON 值在数组中的第一个位置;如果在数组中未找到,则返回 -1;如果匹配的 JSON 值不是数组,则返回 nil。有关回复的更多信息,请参阅Redis 序列化协议规范

示例

在产品颜色列表中查找特定颜色的位置

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

redis> JSON.SET item:1 $ '{"name":"Noise-cancelling Bluetooth headphones","description":"Wireless Bluetooth headphones with noise-cancelling technology","connection":{"wireless":true,"type":"Bluetooth"},"price":99.98,"stock":25,"colors":["black","silver"]}'
OK

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

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

返回 colors 数组的新长度。

redis> JSON.GET item:1
"{\"name\":\"Noise-cancelling Bluetooth headphones\",\"description\":\"Wireless Bluetooth headphones with noise-cancelling technology\",\"connection\":{\"wireless\":true,\"type\":\"Bluetooth\"},\"price\":99.98,\"stock\":25,\"colors\":[\"black\",\"silver\",\"blue\"]}"

获取产品的颜色列表。

redis> JSON.GET item:1 '$.colors[*]'
"[\"black\",\"silver\",\"blue\"]"

在第二个颜色后插入另外两个颜色。现在你有五个颜色。

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

获取更新后的颜色列表。

redis> JSON.GET item:1 $.colors
"[[\"black\",\"silver\",\"yellow\",\"gold\",\"blue\"]]"

查找颜色 silver 所在的位置。

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

另请参阅

JSON.ARRAPPEND | JSON.ARRINSERT


评价此页面
回到顶部 ↑