Spec-Zone.ru › Redis

JSON.ARRTRIM

JSON.ARRTRIM
Синтаксис
JSON.ARRTRIM key path start stop
Доступно в:
Redis Stack / JSON 1.0.0
Сложность по времени:
O(N), когда путь вычисляется до одного значения, где N — размер массива; O(N), когда путь вычисляется до нескольких значений, где N — размер ключа

Усечение массива, чтобы он содержал только указанный диапазон элементов (включительно)

Примеры

Обязательные аргументы

key

ключ для изменения.

Необязательные аргументы

path

JSONPath для указания. По умолчанию — корень $.

start

индекс первого сохраняемого элемента (предыдущие элементы усекаются). По умолчанию — 0.

stop

индекс последнего сохраняемого элемента (следующие элементы усекаются), включая последний. По умолчанию — 0. Отрицательные значения интерпретируются как отсчёт с конца.

О внедиапазонных индексах

JSON.ARRTRIM чрезвычайно лоялен, и использование его с внедиапазонными индексами не приводит к ошибке. Обратите внимание на некоторые различия в обработке внедиапазонных индексов между RedisJSON v2.0 и предыдущими версиями.

Поведение в RedisJSON v2.0:

  • Если start больше размера массива или start > stop, возвращается 0 и пустой массив.
  • Если start < 0, то отсчёт начинается с конца массива.
  • Если stop больше конца массива, он обрабатывается как последний элемент.

Возвращаемое значение

JSON.ARRTRIM возвращает массив целочисленных ответов для каждого пути, новый размер массива или nil, если соответствующее JSON-значение не является массивом. Более подробную информацию об ответах см. в спецификации протокола сериализации Redis.

Примеры

Усечение массива до определённого набора значений

Создаём два продукта наушников с максимальными уровнями громкости.

127.0.0.1:6379> JSON.GET 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

Добавляем новые значения уровня громкости ко второму продукту.

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

Получаем обновлённый массив.

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

Сохраняем только значения между пятым и девятым элементами, включая последний.

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

Получаем обновлённый массив.

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

См. также

JSON.ARRINDEX | JSON.ARRINSERT

Связанные темы

  • RedisJSON
  • Индексирование и поиск JSON-документов

© 2006–2022 Salvatore Sanfilippo
Licensed under the Creative Commons Attribution-ShareAlike License 4.0.
https://redis.io/commands/json.arrtrim/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API