Command: MAP.SET


Overview

The MAP.SET command allows you to store or update a key-value pair within a map-type data structure under a specified top-level key. If the map does not already exist, it will be created automatically. This enables structured data to be efficiently grouped and manipulated under a single key.

Command Name

MAP.SET

Description

MAP.SET <key> <mapKey> <value>

This command sets or updates the value of <mapKey> within the map stored at <key> .

  • If <key> does not exist, a new map is created.

  • If <key> exists and holds a map, the <mapKey> is inserted or updated.

  • The <value> must be a valid JSON string representing a primitive or object.

Use Cases

  • Device tracking per user where each device is uniquely keyed.

  • Configuration storage with nested property overrides.

  • Session metadata per client or session ID.

  • Caching structured objects grouped under a parent key.


Syntax

  MAP.SET <key> <mapKey> <value>
  
  • <key> : Parent map key (e.g., user-001:devices )

  • <mapKey> : Sub-key inside the map (e.g., device-6d6f6sa66d )

  • <value> : JSON string representing the value (e.g., '{"osVersion":"Android 14"}' )

Permissions

  • Write access to the target shard associated with the key is required.

  • Command will fail if write operations are disabled due to system policies or mode.


Examples

Set map entries for user devices:
  localhost:9219> MAP.SET user-001:devices device-6d6f6sa66d '{
  "deviceName": "Pixel 7 Pro",
  "osVersion": "Android 14",
  "batteryLevel": "85%"
}'
Ok

localhost:9219> MAP.SET user-001:devices device-663abc5352 '{
  "deviceName": "iPhone 14 Pro",
  "osVersion": "iOS 16",
  "batteryLevel": "85%"
}'
Ok
  
Retrieve full map:
  localhost:9219> MAP.GET user-001:devices
Ok {
  device-6d6f6sa66d: {
    deviceName: "Pixel 7 Pro",
    osVersion: "Android 14",
    batteryLevel: "85%"
  },
  device-663abc5352: {
    deviceName: "iPhone 14 Pro",
    osVersion: "iOS 16",
    batteryLevel: "85%"
  }
}
  
Retrieve specific entry:
  localhost:9219> MAP.GET user-001:devices device-663abc5352
Ok {
  deviceName: "iPhone 14 Pro",
  osVersion: "iOS 16",
  batteryLevel: "85%"
}
  

Behavior on Error

Scenario Error Message
Missing arguments InvalidArgsError: Key mapKey, and value must be provided, Syntax: MAP.SET <key> <mapKey> <value>
Invalid map key InvalidMapKeyError: <details>
Value exists but is not a map InvalidValueError: The current value associated with the provided key must be a Map type