簡體   English   中英

DynamoDB更新字段僅具有較大的值

[英]DynamoDB update field only with larger value

我正在使用DynamoDB來跟蹤正在使用的數據集中最近看到的值。 我的用例是:

  • 如果DynamoDB中不存在哈希/排序鍵對,則將其插入我們看到它的次數和一個TTL
  • 如果DynamoDB中確實存在該對,則僅在新TTL大於現有TTL的情況下,將計數器字段增加我們看到它的次數並更新TTL

我想做類似的事情:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM