JSON.ARRTRIM
修剪数组,使其仅包含指定的包含范围的元素
语法
JSON.ARRTRIM key path start stop
引入版本:1.0.0
复杂度摘要:O(N)
修剪数组,使其仅包含指定的包含范围的元素
必需参数
key
修改关键。
可选参数
path
是JSONPath来指定。默认为根 $。
start
是要保留的第一个元素的索引(先前的元素被修剪)。默认值为 0。
stop
是要保留的最后一个元素的索引(后续元素将被修剪),包括最后一个元素。默认值为 0。负值被解释为从末尾开始。
[!NOTE] 关于超出范围的索引 JSON.ARRTRIM 非常宽容,将其与超出范围的索引一起使用不会产生错误。请注意 RedisJSON v2.0 和旧版本处理超出范围索引的方式之间的一些差异。
RedisJSON v2.0 的行为:
- 如果
start大于数组大小或start>stop,则返回 0 和空数组。- 如果
start< 0,则从数组末尾开始。- 如果
stop大于数组末尾,则将其视为最后一个元素。
示例
Trim an array to a specific set of values
打造两款最大音量的耳机产品。
redis> JSON.SET key $"[{\"name\":\"健康耳机\",\"description\":\"带降噪功能的无线蓝牙耳机技术\",\"连接\":{\"无线\":true,\"类型\":\"蓝牙\"},\"价格\":99.98,\"库存\":25,\"颜色\":[\"黑色\",\"银色\"],\"max_level\":[60,70,80]},{\"名称\":\"吵闹耳机\",\"描述\":\"具有降噪功能的无线蓝牙耳机技术\",\"连接\":{\"无线\":true,\"类型\":\"蓝牙\"},\"价格\":99.98,\"库存\":25,\"颜色\":[\"黑色\",\"银色\"],\"max_level\":[85,90,100,120]}]" OK
向第二个产品添加新的声级值。
redis> JSON.ARRAPPEND key $.[1].max_level 140 160 180 200 220 240 260 280 1) (整数) 12
获取更新后的数组。
redis> JSON.GET key $.[1].max_level "[[85,90,100,120,140,160,180,200,220,240,260,280]]"
仅保留第五个和第九个元素之间的值,包括最后一个元素。
redis> JSON.ARRTRIM key $.[1].max_level 4 8 1) (整数) 5
获取更新后的数组。
redis> JSON.GET key $.[1].max_level "[[140,160,180,200,220]]"
Redis Software 与 Redis Cloud 兼容性
| Redis 软件 |
Redis Cloud |
说明 |
|---|---|---|
| ✅ 支持 |
✅ 灵活且每年一次 ✅ 免费和固定 |
返回值
RESP2
使用基于 $ 的路径参数:数组回复 或 整数回复 或 空回复,其中每个元素是数组的新大小;如果匹配值不是数组,则为 null。
使用基于 . 的路径参数:整数回复 表示数组的新大小,如果匹配值不是数组,则为 空回复。
RESP3
使用基于 $ 的路径参数(默认):数组回复 或 整数回复 或 空回复,其中每个元素是数组的新大小;如果匹配值不是数组,则为 null。
使用基于 . 的路径参数:整数回复 表示数组的新大小,如果匹配值不是数组,则为 空回复。
参见
JSON.ARRINDEX | JSON.ARRINSERT
相关主题
资料来源:Redis 官方 JSON.ARRTRIM 文档;中文内容参考 Redis 文档许可。