amazon-dynamodb - 如何根据另一个属性的条件更新 dynamodb 属性
问题描述
例如:
我有:
{
"status": "running",
"ts": "1590560955"
}
如果当前系统 ts >= 高于“ts”,则:
{
"status": "completed",
"ts": "1590560955"
}
这甚至可能吗?Lambda 函数在这里有帮助吗?如果是,如何?
解决方案
对的,这是可能的。它被称为“有条件的更新”——例如参见本文档。您可以根据不同属性的值更新一个属性 - 如果这些属性属于同一项目。
这是一个示例(在 Python 中,使用 Amazon 的 boto3 库,但您可以将其翻译成您喜欢的任何语言):
table.update_item(
Key={'p': p},
UpdateExpression='SET status = :completedl',
ConditionExpression='ts > :currentts',
ExpressionAttributeValues={':completed': 'completed', ':currenttts': currentts})
这有条件地使用 key 更新项目p
:如果ConditionExpression
已完成,即项目的ts
值高于“currentts”(您将提供),那么UpdateExpression
将发生中描述的更新:该项目的status
属性设置为字符串“已完成” .
推荐阅读
- android-studio - Kotlin - 不重复的随机数
- reactjs - React、Apollo、GraphQL - 尝试从返回的查询中输出数据的问题
- google-kubernetes-engine - GKE 上的进程自行完成并重新启动
- html - 您可以在悬停时选择任何类还是只选择后代?
- perl - 我的 Perl 变量到变量替换不起作用
- r - 如何使用连接通过两个变量组合两个数据框并使用第二个变量保留不同的行
- r - R解释中的for循环
- javascript - Selection modify by sentence 选择2个句子
- azure - 如何在语言生成模板中使用动态值?
- python - 无法使用请求从网页的不同容器中捕获某个字段