在UpdateExpression

时间:2015-08-25 11:44:37

标签: php amazon-dynamodb

我尝试使用list_append函数将String附加到DynamoDB中的现有StringSet。任何人都可以看到这段代码有什么问题吗?我已阅读并重新阅读亚马逊文档,但似乎无法找到问题。

$this->objClient->updateItem( array(
        'TableName' => 'mytable',

        'Key' => array(
            'sEmailAddress' => array(
                'S' => 'somebody@email.com'
            )
        ),

        "ExpressionAttributeValues" => array(
            ':vServices' => array( 
                                "SS" => array( 
                                    'value to append'
                                )
                            )
        ),

        "ExpressionAttributeNames" => array(
            "#serv" => "sServices"
        ),

        'UpdateExpression' =>   'set #serv = list_append( #serv, :vServices )'

    ));

生成的错误消息是:

无效的UpdateExpression:运算符或函数的操作数类型不正确;运算符或函数:list_append,操作数类型:SS

根据我的阅读,我认为两个操作数都必须是StringSets。我没有尝试将第二个参数更改为单个字符串(类型' S'),但仍然遇到同样的错误:

无效的UpdateExpression:运算符或函数的操作数类型不正确;运算符或函数:list_append,操作数类型:S

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:4)

list_append在两个列表上运行。要将项目添加到集合,您可以使用ADD运算符,而不是使用SET的结果调用list_append