是否可以在update_item

时间:2016-01-22 16:09:48

标签: amazon-dynamodb boto3

我正在尝试在boto3中使用DynamoDB的update_item功能。

我现在正在努力更新项目列表。如果列表尚不存在,我想创建一个新列表,否则将附加到现有列表。

使用UpdateExpression形式的SET my_list = list_append(my_list, :my_value)会返回错误“如果列表不存在,则提供的表达式引用项目中不存在的属性爱好。

知道如何修改我的UpdateExpression

谢谢&最好的祝福, 费边

2 个答案:

答案 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"]}}

http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.UpdateExpressions.html#Expressions.UpdateExpressions.ADD