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