Spec-Zone.ru › Redis

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}}"

См. также

JSON.GET | JSON.MGET

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

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

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

Spec-Zone.ru

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