【发布时间】:2021-02-10 02:12:18
【问题描述】:
我有一个按用户 id 排序的表,每个对象都包含一个对象列表,这些对象具有自己的 id 和两个属性。是否可以使用 update_item 来更新其中任一属性,使用 user_id 和 obj_id。我发现的唯一方法是使用 GET 然后 PUT,感觉可能会更昂贵。
这是我表中的示例条目:
{'id': '0',
'commands': [{'id': '0', 'command': '', actions: []}, {'id': '1', 'command': '', actions: []}]
}
假设我想在 user_id 0 上更新 id 为 0 的命令以获得不同的操作列表,我想我可以这样做:
table = dynamodb.Table('commands')
user_id = '0'
command_id = '0'
document = table.get_item(Key={"id": user_id})['Item']
for command in document['commands']:
if command['id'] == command_id:
command['actions'] = ['new actions']
break
table.put(Item=document, ReturnValues="NONE")
但是有没有一种方法可以更有效地使用 update_item 呢?
我可以在文档中找到的唯一内容是在表达式中使用 list_append,但我不想附加要编辑现有项目的新项目。
我找到了这两个问题作为参考,第一个是我上面的解决方案,但是我在这里问的问题没有得到回答,我可以使用 update_item 来做吗?
【问题讨论】:
标签: python amazon-web-services amazon-dynamodb boto3