是否可以在 update_item 中合并 if_not_exists 和 list_append

Is it possible to combine if_not_exists and list_append in update_item

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

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

使用 SET my_list = list_append(my_list, :my_value) returns 形式的 UpdateExpression 错误 “提供的表达式引用了项目中不存在的属性” 如果列表还不存在。

知道如何修改我的 UpdateExpression 吗?

可以使用list_append(if_not_exists())构造。

更新表达式:

'SET my_list2 = list_append(if_not_exists(my_list2, :empty_list), :my_value)'

表达式属性值:

{ ":my_value":{"L": [{"S":"test"}]}, ":empty_list":{"L":[]} }

Boris 解决方案的替代方法是使用 set 而不是列表数据类型并使用 ADD 关键字,它完全符合您的要求。

添加后,更新表达式变为:ADD setName :s

表达式属性值可以是这样的:{":s": {"SS":["First", "Second"]}}

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