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
Связанные темы
© 2006–2022 Salvatore Sanfilippo
Licensed under the Creative Commons Attribution-ShareAlike License 4.0.
https://redis.io/commands/json.arrtrim/