JSON.SET - Amazon MemoryDB

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

JSON.SET

在路徑上設定JSON值。

如果路徑呼叫物件成員:

  • 如果父元素不存在,命令將傳回NONEXISTENT錯誤。

  • 如果父元素存在,但不是物件,則命令將傳回 ERROR。

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

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

    • 如果成員存在,其值將被該JSON值取代。

如果路徑呼叫陣列索引:

  • 如果父元素不存在,命令將傳回NONEXISTENT錯誤。

  • 如果父元素存在,但不是陣列,命令將傳回 ERROR。

  • 如果父元素存在,但索引超出範圍,則命令將傳回OUTOFBOUNDARIES錯誤。

  • 如果父元素存在且索引有效,則該元素將被新JSON值取代。

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

語法

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

【NX | XX】 您可以在其中擁有 0 或 1 個 【NX | XX】 識別符

  • 金鑰 (必要) – JSON 文件類型的金鑰

  • 路徑 (必要) – 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