繁体   English   中英

DynamoDB:如果有新项目,则更新原子计数器并添加其他信息

[英]DynamoDB: Update atomic counter and add other info if new item

我有一个只有一个哈希键和两个数值的数据库: countersome_value

我想更新原子计数器counter 我知道boto /DyamoDb 将负责创建元素,如果该元素尚未存在于数据库中。

由于我正在创建元素,因此我想使用相同的写入操作将some_value也放入数据库中。 是否有可能在这方面修改update_item代码?

table.update_item(
            Key={
                'my_key': some_string
            },
            UpdateExpression="SET counter = if_not_exists(counter , :start) + :inc",
            ExpressionAttributeValues={
                ':inc': 1,
                ':start' : 0
            },
            ReturnValues="UPDATED_NEW"
        )

是的,您还可以随计数器一起更新some_item 事实上,您可以更新多个项目。 以下是用于更新多个值的久经考验的代码。

    table.update_item(
    Key={
        'my_key': some_string
    },
    UpdateExpression="SET #counter = if_not_exists(#counter, :start) + :inc, #some_value = if_not_exists(#some_value, :start) - :inc",
    ExpressionAttributeNames={'#counter': 'counter', '#some_value': 'some_value'},
    ExpressionAttributeValues={
        ':inc': 1,
        ':start': 0
    },
    ReturnValues="UPDATED_NEW"
)

PS:始终定义您的表达式属性名称,而不是直接在表达式中使用它,以避免冲突和后续错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM