JSON.ARRINDEX
JSON.ARRINDEX
JSON.ARRINDEX key path value [start [stop]]
- Доступно в:
- Redis Stack / JSON 1.0.0
- Сложность по времени:
- O(N), когда путь вычисляется до одного значения, где N — размер массива; O(N), когда путь вычисляется до нескольких значений, где N — размер ключа
Поиск первого вхождения JSON-значения в массиве
Обязательные аргументы
key
ключ для парсинга.
path
JSONPath для указания.
value
значение, для которого нужно найти индекс в одном или нескольких массивах.
Для указания строки как значения массива для индексации, оберните строку в двойные одинарные кавычки. Пример: '"silver"'. Для более подробного использования, см. Примеры.
Необязательные аргументы
start
начальное включительное значение для указания в срезе массива для поиска. По умолчанию 0.
stop
исключительное конечное значение для указания в срезе массива для поиска, включая последний элемент. По умолчанию 0. Отрицательные значения интерпретируются как отсчет с конца.
Индексы за пределами диапазона округляются до начала и конца массива. Обратный диапазон индексов (например, от 1 до 0) возвращает «не найдено» или -1.
Возвращаемое значение
Функция JSON.ARRINDEX возвращает массив целочисленных ответов для каждого пути, первая позиция в массиве каждого JSON-значения, соответствующего пути, -1 если не найдено в массиве, или nil, если соответствующее JSON-значение не является массивом. Дополнительную информацию об ответах см. в спецификации протокола сериализации Redis.
Примеры
Нахождение места цвета в списке цветов продукта
Создайте документ для беспроводных наушников с черным и серебряным цветами.
127.0.0.1:6379> JSON.SET item:1 $ '{"name":"Noise-cancelling Bluetooth headphones","description":"Wireless Bluetooth headphones with noise-cancelling technology","connection":{"wireless":true,"type":"Bluetooth"},"price":99.98,"stock":25,"colors":["black","silver"]}'
OKДобавьте цвет blue в конец массива colors. JSON.ARRAPEND возвращает новый размер массива.
127.0.0.1:6379> JSON.ARRAPPEND item:1 $.colors '"blue"'
1) (integer) 3Возвращает новую длину массива colors.
JSON.GET item:1
"{\"name\":\"Noise-cancelling Bluetooth headphones\",\"description\":\"Wireless Bluetooth headphones with noise-cancelling technology\",\"connection\":{\"wireless\":true,\"type\":\"Bluetooth\"},\"price\":99.98,\"stock\":25,\"colors\":[\"black\",\"silver\",\"blue\"]}"Получите список цветов для продукта.
127.0.0.1:6379> JSON.GET item:1 '$.colors[*]'
"[\"black\",\"silver\",\"blue\"]"Вставьте два дополнительных цвета после второго цвета. Теперь у вас пять цветов.
127.0.0.1:6379> JSON.ARRINSERT item:1 $.colors 2 '"yellow"' '"gold"'
1) (integer) 5Получите обновленный список цветов.
127.0.0.1:6379> JSON.GET item:1 $.colors
"[[\"black\",\"silver\",\"yellow\",\"gold\",\"blue\"]]"Найдите местоположение цвета silver.
127.0.0.1:6379> JSON.ARRINDEX item:1 $..colors '"silver"'
1) (integer) 1См. также
JSON.ARRAPPEND | JSON.ARRINSERT
Связанные темы
© 2006–2022 Salvatore Sanfilippo
Licensed under the Creative Commons Attribution-ShareAlike License 4.0.
https://redis.io/commands/json.arrindex/