

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

# JSON.MSET
<a name="json-mset"></a>

支援 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\""
```