dynamodb:如何增加地图中的值

Kal*_*nam 5 amazon-dynamodb boto3

我正在尝试使用 dynamodb 来维护名称及其值的映射

eg. {"scores": {"player-a": 10}}
Run Code Online (Sandbox Code Playgroud)

我还希望使用增量运算符来执行原子增量。但是,我几乎找不到有关如何使用/更新 dynamodb 地图的文档。这是我到目前为止的python代码

 import boto3
 ddb = boto3.client('dynamodb')
 ddb.update_item(TableName='ledger', Key={'week': {'S': '06-12'}}, 
                 UpdateExpression='SET scores.player-a  = scores.player-a + :val', 
                 ExpressionAttributeValues={':val': {'N': '12'}})
Run Code Online (Sandbox Code Playgroud)

omu*_*thu 5

DynamoDB 更新项使用 ExpressionAttributeNames 来防止属性名称中的特殊字符在表达式中被误解。

您的更新项目包含“player-a”作为键名,其中包含“-”(连字符)。

ddb.update_item(
    TableName='ledger',
    Key={
        'week': {
            'S': '06-12'
        }
    }, 
    UpdateExpression='SET scores.#s = scores.#s + :val",  
    ExpressionAttributeNames={
        "#s": "player-a"
    },  
    ExpressionAttributeValues={
        ':val': {
            'N': '12'
        }
    }
)
Run Code Online (Sandbox Code Playgroud)

  • 如果项目内不存在,是否可以更改此类代码以插入 MAP? (3认同)
  • 如果“scores”键不可用,它不会抛出错误吗?我们该如何处理? (3认同)