[英]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.