JSON.SET
경로에 JSON 값을 설정합니다.
경로가 객체 멤버를 호출하는 경우
상위 요소가 없는 경우, 다음 명령은 NONEXISTENT 오류를 반환합니다.
상위 요소가 있지만 객체가 아닌 경우, 명령은 ERROR를 반환합니다.
상위 요소가 있고 객체인 경우
멤버가 없으면 상위 객체가 경로의 마지막 하위 객체인 경우에만 새 멤버는 상위 객체에 추가됩니다. 그렇지 않으면 명령은 NONEXISTENT 오류를 반환합니다.
멤버가 있으면 해당 값이 JSON 값으로 대체됩니다.
경로가 배열 인덱스를 호출하는 경우
상위 요소가 없는 경우, 다음 명령은 NONEXISTENT 오류를 반환합니다.
상위 요소가 있지만 배열이 아닌 경우, 명령은 ERROR를 반환합니다.
상위 요소가 있지만 인덱스가 범위를 벗어난 경우, 명령은 OUTOFBOUNDARIES 오류를 반환합니다.
상위 요소가 있고 인덱스가 유효하면 요소는 새 JSON 값으로 대체됩니다.
경로가 객체 또는 배열을 호출하는 경우 값(객체 또는 배열)은 새 JSON 값으로 대체됩니다.
구문
JSON.SET <key> <path> <json> [NX | XX]
[NX | XX] 여기에 [NX | XX] 식별자 0개 또는 1개가 있을 수 있습니다..
키(필수) - JSON 문서 유형의 키입니다.
경로(필수) - JSON 경로입니다. 새 키의 경우 JSON 경로가 루트 ‘.’여야 합니다.
NX(선택 사항) - 경로가 루트이면, 키가 없는 경우에만 값을 설정합니다(예: 새 문서 삽입). 경로가 루트가 아니면 경로가 없는 경우에만 값을 설정합니다.
XX(선택 사항) - 경로가 루트이면, Redis 키가 있는 경우에만 값을 설정합니다(예: 기존 문서 대체). 경로가 루트가 아니면 경로가 있는 경우에만 값을 설정합니다.
반환
성공 시 단순 문자열 '확인'.
-
NX 또는 XX 조건이 충족되지 않으면 null입니다.
예
향상된 경로 구문.
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]}"
제한된 경로 구문.
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