JSON.SET
JSON.SET
JSON.SET key path value [NX | XX]
- Доступно в:
- Redis Stack / JSON 1.0.0
- Сложность по времени:
- O(M+N), когда путь оценивается как единственное значение, где M — размер исходного значения (если оно существует), а N — размер нового значения; O(M+N), когда путь оценивается как несколько значений, где M — размер ключа, а N — размер нового значения
Устанавливает значение JSON по пути path в key
Обязательные аргументы
key
ключ для изменения.
value
значение для установки по указанному пути
Необязательные аргументы
path
путь JSONPath для указания. По умолчанию — корень $. Для новых ключей Redis path должен быть корнем. Для существующих ключей, если существует всё path, значение, которое оно содержит, заменяется на json значение. Для существующих ключей, если существует path, за исключением последнего элемента, добавляется новый дочерний элемент со значением json.
Добавляет ключ (с его соответствующим значением) в JSON-объект (в ключе типа данных RedisJSON) только в том случае, если он является последним дочерним элементом в path, или он является родителем добавляемого нового дочернего элемента в path. Необязательные аргументы NX и XX изменяют это поведение как для новых ключей типа данных RedisJSON, так и для ключей JSON-объектов в них.
NX
устанавливает ключ только если он ещё не существует.
XX
устанавливает ключ только если он уже существует.
Возвращаемое значение
JSET.SET возвращает простую строковую команду: OK при успешном выполнении или nil если указанные NX или XX условия не выполнены. Подробнее о командах см. Спецификация протокола сериализации Redis.
Примеры
Замена существующего значения
127.0.0.1:6379> JSON.SET doc $ '{"a":2}'
OK
127.0.0.1:6379> JSON.SET doc $.a '3'
OK
127.0.0.1:6379> JSON.GET doc $
"[{\"a\":3}]"Добавление нового значения
127.0.0.1:6379> JSON.SET doc $ '{"a":2}'
OK
127.0.0.1:6379> JSON.SET doc $.b '8'
OK
127.0.0.1:6379> JSON.GET doc $
"[{\"a\":2,\"b\":8}]"Обновление многопутевых данных
127.0.0.1:6379> JSON.SET doc $ '{"f1": {"a":1}, "f2":{"a":2}}'
OK
127.0.0.1:6379> JSON.SET doc $..a 3
OK
127.0.0.1:6379> JSON.GET doc
"{\"f1\":{\"a\":3},\"f2\":{\"a\":3}}"См. также
Связанные темы
© 2006–2022 Salvatore Sanfilippo
Licensed under the Creative Commons Attribution-ShareAlike License 4.0.
https://redis.io/commands/json.set/