我的数据库只有一个哈希键和两个数值:counter
和some_value
。
我想更新原子计数器counter
。我知道boto
/ DyamoDb会照顾我创建的元素,如果数据库中尚未存在的话。
由于我正在创建元素,因此我想使用相同的写操作将some_value
放入db中。是否有可能在这方面修改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"
)
答案 0 :(得分:0)
是,您还可以与计数器一起更新 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:始终定义expression attribute names,而不是直接在表达式中使用它,以避免冲突和随后的错误。