JSON 的 JSON 格式。阿特里姆

语法
JSON.ARRTRIM key path start stop
可用:
Redis 堆栈 / JSON 1.0.0
时间复杂度:
O(N) 当 path 被计算为单个值时,其中 N 是数组的大小,O(N) 当 path 被计算为多个值时,其中 N 是键的大小

剪裁数组,使其仅包含指定的元素范围

例子

必需参数

key

是修改的关键。

可选参数

path

是 JSONPath 来指定。默认值为 root 。$

start

是要保留的第一个元素的索引(前面的元素被修剪)。默认值为 0。

stop

是要保留的最后一个元素的索引(修剪以下元素),包括最后一个元素。默认值为 0。负值被解释为从末尾开始。

关于超出范围的索引:

JSON 的 JSON 格式。ARRTRIM 非常宽容,将其与超出范围的索引一起使用不会产生错误。请注意 RedisJSON v2.0 和旧版本处理超出范围索引的方式之间的一些差异。

从 RedisJSON v2.0 开始的行为:

  • 如果start大于数组的大小,或者start > stop返回 0 和一个空数组。
  • 如果start< 0,则从数组的末尾开始。
  • 如果stop大于数组的末尾,则将其视为最后一个元素。

返回

JSON 的 JSON 格式。ARRTRIM 为每个路径返回一个整数回复数组、数组的新大小,或者nil,如果匹配的 JSON 值不是数组。 有关回复的更多信息,请参阅 Redis 序列化协议规范

例子

将数组修剪为一组特定的值

创建两个具有最大声级的耳机产品。

redis> JSON.SET key $
"[{\"name\":\"Healthy headphones\",\"description\":\"Wireless Bluetooth headphones with noise-cancelling technology\",\"connection\":{\"wireless\":true,\"type\":\"Bluetooth\"},\"price\":99.98,\"stock\":25,\"colors\":[\"black\",\"silver\"],\"max_level\":[60,70,80]},{\"name\":\"Noisy headphones\",\"description\":\"Wireless Bluetooth headphones with noise-cancelling technology\",\"connection\":{\"wireless\":true,\"type\":\"Bluetooth\"},\"price\":99.98,\"stock\":25,\"colors\":[\"black\",\"silver\"],\"max_level\":[85,90,100,120]}]"
OK

Add new sound level values to the second product.

redis> JSON.ARRAPPEND key $.[1].max_level 140 160 180 200 220 240 260 280
1) (integer) 12

Get the updated array.

redis> JSON.GET key $.[1].max_level
"[[85,90,100,120,140,160,180,200,220,240,260,280]]"

Keep only the values between the fifth and the ninth element, inclusive of that last element.

redis> JSON.ARRTRIM key $.[1].max_level 4 8
1) (integer) 5

Get the updated array.

redis> JSON.GET key $.[1].max_level
"[[140,160,180,200,220]]"

See also

JSON.ARRINDEX | JSON.ARRINSERT


RATE THIS PAGE
Back to top ↑