本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在路徑設定 JSON 值。
如果路徑呼叫物件成員:
如果父元素不存在,命令將傳回 NONEXISTENT 錯誤。
如果父元素存在,但不是物件,則命令會傳回 ERROR。
如果有父元素且為物件:
如果沒有成員,只會在父物件是路徑中的最後一個子系時,將新成員附加至父物件。否則,命令將傳回 NONEXISTENT 錯誤。
如果有該成員,其值將以 JSON 值取代。
如果路徑呼叫陣列索引:
如果父元素不存在,命令將傳回 NONEXISTENT 錯誤。
如果父元素存在但不是陣列,則命令會傳回 ERROR。
如果父元素存在但索引超出範圍,則命令將傳回 OUTOFBOUNDARIES 錯誤。
如果有父元素且索引有效,該元素將以新的 JSON 值取代。
如果路徑呼叫物件或陣列,該值 (物件或陣列) 將以新的 JSON 值取代。
語法
JSON.SET <key> <path> <json> [NX | XX]
【NX | XX】 您可以在其中擁有 0 或 1 個 【NX | XX】 識別符
key (必要) – JSON 文件類型的 key
path (必要) – JSON 路徑。對於新金鑰,JSON 路徑必須是根 "."。
NX (選用) – 如果路徑是根,則只有在金鑰不存在時才設定值,即插入新文件。如果路徑不是根,則只有在路徑不存在時才設定值,即將值插入文件。
XX (選用) – 如果路徑是根,則只有在金鑰存在時才設定值,即取代現有的文件。如果路徑不是根,請僅在路徑存在時才設定值,即更新現有值。
傳回
成功時有簡單字串 'OK'。
-
如果不符合 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