[英]DynamoDB: Update atomic counter and add other info if new item
我有一個只有一個哈希鍵和兩個數值的數據庫: counter
和some_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.