AWS DynamoDB创建更新表达式-如果不存在则添加新的字符串集

时间:2018-12-16 19:26:31

标签: amazon-web-services nosql amazon-dynamodb boto3

我正在尝试创建一个更新,如果该字符串集存在,则将电子邮件添加到该字符串集中,或者如果该电子邮件集不存在,则使用该电子邮件创建一个字符串集。

我从以下答案中提取了一些代码:Append to or create StringSet if it doesn't exist,但我似乎无法使其正常工作。

我最终遇到错误"errorMessage": "An error occurred (ValidationException) when calling the UpdateItem operation: Invalid UpdateExpression: Incorrect operand type for operator or function; operator: ADD, operand type: MAP" }

 response = table.update_item(
        Key={'email':email},
        UpdateExpression='ADD emails :i',
        ExpressionAttributeValues={
            ':i': {SS': [email]},
        },
        ReturnValues="UPDATED_NEW"
    )

如何创建一个更新表达式以创建一个不存在的字符串集,或者如果存在则添加一个项目?

1 个答案:

答案 0 :(得分:1)

本周我遇到了同样的问题,后来我找到了一个解决方案。看下面的例子:

response = table.update_item(
    Key={'email': email },
    UpdateExpression="ADD emails :i",
    ExpressionAttributeValues={":i": set([email])},
    ReturnValues="UPDATED_NEW"
)

这对我来说可以创建字符串集或附加到现有的字符串集。