[英]DynamoDB update field only with larger value
我正在使用DynamoDB來跟蹤正在使用的數據集中最近看到的值。 我的用例是:
我想做類似的事情:
counter: int = 5
ttl: int = 1568585305
ddb_table.update_item(
Key={'accountId': account_id, 'sourceIp': source_ip},
UpdateExpression="SET #counter = if_not_exists(#counter, :start) + :inc SET #ttl = max(#ttl, ttl)",
ExpressionAttributeNames={'#counter': 'counter', '#ttl": 'ttl'},
ExpressionAttributeValues={':inc': counter, ':start': 0}
)
我意識到SET #ttl = max(#ttl, ttl)
是無效的,但是還有其他事情可以做我想要的嗎(即,如果新值大於舊值,則僅使用新值更新TTL)?
您可以使用Contitional Expressions進行“僅當A
大於B
時才更新/插入/刪除”。
但是,我不確定您的意思是:
如果DynamoDB中確實存在[hash / sort key]對,則將計數器字段增加我們看到的次數,並僅在新TTL大於現有TTL的情況下更新TTL
HashKey / SortKey對是任何DynamoDB表的主鍵(請參閱AWS Docs )。 這意味着您只會看到特定HashKey / SortKey組合的一個元素。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.