我正在尝试在boto3中使用DynamoDB的update_item
功能。
我现在正在努力更新项目列表。如果列表尚不存在,我想创建一个新列表,否则将附加到现有列表。
使用UpdateExpression
形式的SET my_list = list_append(my_list, :my_value)
会返回错误“如果列表不存在,则提供的表达式引用项目中不存在的属性爱好。
知道如何修改我的UpdateExpression
?
谢谢&最好的祝福, 费边
答案 0 :(得分:100)
您可以使用list_append(if_not_exists())
构建。
UpdateExpression:
'SET my_list2 = list_append(if_not_exists(my_list2, :empty_list), :my_value)'
ExpressionAttributeValues:
{ ":my_value":[{"S":"test"}], ":empty_list":[] }
答案 1 :(得分:3)
Boris解决方案的替代方案可能是使用set而不是list数据类型并使用ADD关键字,它完全符合您的要求。
使用“添加”,更新表达式变为:ADD setName :s
表达式属性值可以是:{":s": {"SS":["First", "Second"]}}