2016-10-27 50 views
1

我在其中一個DynamoDB表上設置了一個字符串。使用PHP和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上的項目已經存在,它纔會起作用。

如何更改此代碼以在現有項目上創建密鑰(如果不存在)?

回答

0

如果該項目沒有transaction_ids,它應該創建屬性並將值添加到它。

如果該項目具有屬性transaction_ids,則只要新值的數據類型與現有的SS屬性數據類型匹配,就應該爲其添加值。

轉寄此link

如果現有的數據類型是一組,並且如果值也是一組,然後 值被附加到現有的組。例如,如果屬性 的值是集合[1,2],並且指定了添加操作[3],那麼 的最終屬性值爲[1,2,3]。如果ADD動作是 爲集合屬性指定並且指定的屬性類型爲 與現有集合類型不匹配,則會發生錯誤。

兩個集合必須具有相同的基本數據類型。例如,如果 現有數據類型是一組字符串,則Value也必須是一組 字符串。

我已經測試過JavaScript API。它按預期工作。它也應該在PHP中工作。

示例代碼: -

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

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