JSON.SET - Amazon MemoryDB

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

JSON.SET

在路徑上設定 JSON 值。

如果路徑呼叫物件成員:

  • 如果父元素不存在,該命令將返回不存在的錯誤。

  • 如果父元素存在但不是對象,則該命令將返回 ERROR。

  • 如果有父元素且為物件:

    • 如果沒有成員,只會在父物件是路徑中的最後一個子系時,將新成員附加至父物件。否則,該命令將返回不存在的錯誤。

    • 如果有該成員,其值將以 JSON 值取代。

如果路徑呼叫陣列索引:

  • 如果父元素不存在,該命令將返回一個不存在的錯誤。

  • 如果父元素存在但不是數組,則該命令將返回 ERROR。

  • 如果父元素存在但索引超出邊界,則該命令將返回 OUTOFBOUNDANDS 錯誤。

  • 如果有父元素且索引有效,該元素將以新的 JSON 值取代。

如果路徑呼叫物件或陣列,該值 (物件或陣列) 將以新的 JSON 值取代。

語法

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

[NX | XX] 您可以在其中包含 [NX | XX] 識別碼的 0 或 1 個

  • 密鑰(必填)-JSON 文檔類型的紅色 OSS 密鑰

  • 路徑 (必要) — JSON 路徑。對於新的 Redis OSS 金鑰,JSON 路徑必須是根「.」。

  • NX (選用) — 如果路徑為根,請僅在 Redis OSS 金鑰不存在時才設定值,也就是插入新文件。如果路徑不是根,只有在路徑不存在時才設置該值,即將值插入到文檔中。

  • XX (選用) — 如果路徑為根,請僅在 Redis OSS 金鑰存在時才設定值,亦即取代現有文件。如果路徑不是根,則僅在路徑存在時才設置該值,即更新現有值。

傳回

  • 成功時有簡單字串 '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