Dynamodb 在字典中添加或更新键

Dynamodb Add or Update key in dict

我有一个具有以下结构的 dynamodb table:

'Items': [
   {'user_id': 'myuser',
    'owes_to': {
         'youruser': '10',
         'user3': '20'
       }
   }]

在 dynamodb 中是否可以在 owes_to 中创建一个新的用户密钥,或者如果它已经存在则添加到该密钥的值中?

在两个调用的示例中:

  1. 添加值为 20 的 'user4',它不存在,因此创建值为 20 的 user4 密钥)
  2. 下次将 user4 值 20 更新为 40,这次密钥已经存在,因此将 20 添加到现有值

有可能,更新表达式类似这样:

update_request = {
    Key={'user_id': ':id'},
    UpdateExpression='SET owes_to.#user_name = if_not_exists(owes_to.#user_name, :default_val) + :val',
    ExpressionAttributeNames={
        '#user_name': <your_user_name>
    }
    ExpressionAttributeValues={
        ':id': 'myuser',
        ':val': <your_update_value>,
        ':default_val': 0
    }
}

注意 if_not_exists(owes_to.#user_name, :default_val) 结构。如果存在,它将获取用户的值,如果不存在,则获取 :default_val 中指定的值。 有关在 official docs

中添加和更新地图值的更多信息