簡體   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