使用PHP和DynamoDB更新和创建条目

时间:2016-10-27 21:39:56

标签: php amazon-dynamodb

我在其中一个DynamoDB表上设置了一个字符串。

此代码将新项添加到字符串集并且效果很好

$update = $client->updateItem ( array (
  'TableName' => 'myTable',
  'Key' => array (
    'rep_num' => array (
      'S' => $id_num
    )
  ),
  'ExpressionAttributeValues' =>  array (
    ':transaction_ids' => array(
        'SS' => array($transaction_id)
    )
  ),
  'UpdateExpression' => 'ADD transaction_ids :transaction_ids'
));

我的问题是,它仅在项目上已存在密钥transaction_ids时才有效。

如果现有项目不存在,如何更改此代码以创建密钥?

1 个答案:

答案 0 :(得分:0)

如果该项目没有transaction_ids,则应创建该属性并为其添加值。

如果项目具有属性transaction_ids,只要新值的数据类型与现有的SS属性数据类型匹配,它就应该为其添加值。

请参阅此link

  

如果现有数据类型是一个集合,如果Value也是一个集合,那么   值将附加到现有集。例如,如果属性   value是set [1,2],ADD动作指定[3],然后是   最终属性值为[1,2,3]。如果ADD操作是,则会发生错误   为set属性指定并指定的属性类型   与现有的集合类型不匹配。

     

两个集必须具有相同的原始数据类型。例如,如果   现有数据类型是一组字符串,Value也必须是一组   字符串。

我已使用JavaScript API进行过测试。它按预期工作。它也应该在PHP中工作。

示例代码: -

UpdateExpression : "ADD #transaction_ids :transaction_ids ",
        ExpressionAttributeNames: {
            '#transaction_ids' : 'transaction_ids',

        },
        ExpressionAttributeValues: {':transaction_ids' :  docClient.createSet(["3"])},