[英]How can I update an attribute in a DynamoDB table regardless of the key or condition?
[英]How can I update a DynamoDB item's attribute based on a condition?
我想更新 DynamoDB 上的一个项目,但它的一个特定属性只有在数据库中不为 NULL 时才应更改:
假设数据库中的当前项目如下所示:
PK | SK | 属性1 | 属性2 |
---|---|---|---|
MYPK | 一些-id1 | 旧值 | 老东西 |
MYPK | 一些-id2 | 无效的 | 老东西 |
现在我在本地将 attribute1 设置为new value
并将 attribute2 设置为new stuff
。 保存到数据库后我想要获得的是:
PK | SK | 属性1 | 属性2 |
---|---|---|---|
MYPK | 一些-id1 | 旧值 | 新的东西 |
MYPK | 一些-id2 | 新价值 | 新的东西 |
注意attribute2 是如何为两者更新的,但attribute1 只在它为NULL 的地方更新:在其他地方保留现有值。
我知道如果根本没有设置属性 1,我可以在 UpdateExpression 中使用if_not_exists()
来执行此操作,但在我的情况下,属性已经设置好了。
有什么方法可以做到这一点(例如使用 UpdateExpression 的某些语法),而无需手动查询数据库并检查 attribute1 的值?
我认为您不能通过“盲写”来做到这一点,您需要先阅读该项目并使用正确的参数构造更新命令。
理想情况下,您将在每个项目上都有一个“更新时间”时间戳,这样您就可以进行有条件的更新以确保您只写入最新的项目,并重试在读取和写入之间已更新的所有项目。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.