本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
JSON.MSET
支援 Valkey 8.1 版和更新版本。
設定多個金鑰的 JSON 值。操作是原子的。已設定所有值或未設定任何值。
語法
JSON.MSET key path json [ key path json ... ]
如果路徑呼叫物件成員:
如果父元素不存在,命令將傳回 NONEXISTENT 錯誤。
如果父元素存在,但不是物件,則命令會傳回 ERROR。
如果有父元素且為物件:
如果沒有成員,只會在父物件是路徑中的最後一個子系時,將新成員附加至父物件。否則,命令將傳回 NONEXISTENT 錯誤。
如果有該成員,其值將以 JSON 值取代。
如果路徑呼叫陣列索引:
如果父元素不存在,命令將傳回 NONEXISTENT 錯誤。
如果父元素存在,但不是陣列,則命令會傳回 ERROR。
如果父元素存在,但索引超出範圍,則命令將傳回 OUTOFBOUNDARIES 錯誤。
如果有父元素且索引有效,該元素將以新的 JSON 值取代。
如果路徑呼叫物件或陣列,該值 (物件或陣列) 將以新的 JSON 值取代。
傳回
簡易字串回覆:如果操作成功,則為「OK」。
簡單錯誤回覆:如果操作失敗。
範例
增強型路徑語法:
127.0.0.1:6379> JSON.MSET k1 . '[1,2,3,4,5]' k2 . '{"a":{"a":1, "b":2, "c":3}}' k3 . '{"a": [1,2,3,4,5]}' OK 127.0.0.1:6379> JSON.GET k1 "[1,2,3,4,5]" 127.0.0.1:6379> JSON.GET k2 "{\"a\":{\"a\":1,\"b\":2,\"c\":3}}" 127.0.0.1:6379> JSON.MSET k2 $.a.* '0' k3 $.a[*] '0' OK 127.0.0.1:6379> JSON.GET k2 "{\"a\":{\"a\":0,\"b\":0,\"c\":0}}" 127.0.0.1:6379> JSON.GET k3 "{\"a\":[0,0,0,0,0]}"
受限路徑語法:
127.0.0.1:6379> JSON.MSET k1 . '{"name": "John","address": {"street": "123 Main St","city": "Springfield"},"phones": ["555-1234","555-5678"]}' OK 127.0.0.1:6379> JSON.MSET k1 .address.street '"21 2nd Street"' k1 .address.city '"New York"' OK 127.0.0.1:6379> JSON.GET k1 .address.street "\"21 2nd Street\"" 127.0.0.1:6379> JSON.GET k1 .address.city "\"New York\""