JSON.SET - Amazon MemoryDB

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

JSON.SET

Establece valores JSON en la ruta.

Si la ruta de acceso llama a un miembro de objeto:

  • Si el elemento principal no existe, el comando devolverá un error INEXISTENTE.

  • Si el elemento principal existe pero no es un objeto, el comando devolverá ERROR.

  • Si el elemento principal existe y es un objeto:

    • Si el miembro no existe, se anexará un miembro nuevo al objeto principal si y solo si el objeto principal es el último objeto secundario de la ruta. De lo contrario, el comando devolverá un error INEXISTENTE.

    • Si el miembro existe, su valor se reemplazará por el valor JSON.

Si la ruta requiere un índice de matriz:

  • Si el elemento principal no existe, el comando devolverá un error INEXISTENTE.

  • Si el elemento principal existe pero no es una matriz, el comando devolverá ERROR.

  • Si el elemento principal existe pero el índice está fuera de los límites, el comando devuelve un error OUTOFBOUNDARIES.

  • Si el elemento principal existe y el índice es válido, el elemento se reemplazará por el nuevo valor JSON.

Si la ruta llama a un objeto o matriz, el valor (objeto o matriz) se reemplazará por el nuevo valor JSON.

Sintaxis

JSON.SET <key> <path> <json> [NX | XX]

[NX | XX] Donde puede tener 0 o 1 de [NX | XX] identificadores

  • clave (obligatoria): clave OSS de Redis del tipo de documento JSON

  • ruta (obligatoria): una ruta JSON. Para una nueva clave OSS de Redis, la ruta JSON debe ser la raíz «.».

  • NX (opcional): si la ruta es la raíz, establezca el valor solo si la clave OSS de Redis no existe, es decir, inserte un documento nuevo. Si la ruta no es la raíz, establece el valor solo si la ruta no existe, es decir, inserta un valor en el documento.

  • XX (opcional): si la ruta es la raíz, defina el valor solo si la clave OSS de Redis existe, es decir, sustituya el documento existente. Si la ruta no es la raíz, establece el valor solo si la ruta existe, es decir, actualiza el valor existente.

Devolución

  • Cadena simple ‘OK’ en caso de éxito.

  • Es nulo si no se cumple la condición NX o XX.

Ejemplos

Sintaxis de la ruta mejorada:

127.0.0.1:6379> JSON.SET k1 . '{"a":{"a":1, "b":2, "c":3}}' OK 127.0.0.1:6379> JSON.SET k1 $.a.* '0' OK 127.0.0.1:6379> JSON.GET k1 "{\"a\":{\"a\":0,\"b\":0,\"c\":0}}" 127.0.0.1:6379> JSON.SET k2 . '{"a": [1,2,3,4,5]}' OK 127.0.0.1:6379> JSON.SET k2 $.a[*] '0' OK 127.0.0.1:6379> JSON.GET k2 "{\"a\":[0,0,0,0,0]}"

Sintaxis de la ruta restringida:

127.0.0.1:6379> JSON.SET k1 . '{"c":{"a":1, "b":2}, "e": [1,2,3,4,5]}' OK 127.0.0.1:6379> JSON.SET k1 .c.a '0' OK 127.0.0.1:6379> JSON.GET k1 "{\"c\":{\"a\":0,\"b\":2},\"e\":[1,2,3,4,5]}" 127.0.0.1:6379> JSON.SET k1 .e[-1] '0' OK 127.0.0.1:6379> JSON.GET k1 "{\"c\":{\"a\":0,\"b\":2},\"e\":[1,2,3,4,0]}" 127.0.0.1:6379> JSON.SET k1 .e[5] '0' (error) OUTOFBOUNDARIES Array index is out of bounds