2017年12月6日 星期三

DynamoDB 更新

更新 List/Set 裡的內容

首先需要注意 List 跟 Set 主要的不同點:

  1. List 可以包含重複的 Element,而更新時基本上也不會對重複的 Element 做什麼處理;而 Set 會自動合併相同的 Element,例如 String Set 在寫入重複的字串時,不會再出現第二個相同的 Element(也不會噴 Exception)。
  2. List 的內容更新,需要使用 SET 指令;但是 Set 內容的更新,則是使用 ADD 指令。
Attribute Value 不要直接寫在 Expression 裡
key 不存在時,list_append() 會失敗

可參考 [6],AWS 的 SDK 在嘗試附加內容到一個 list 裡時,如果這個 list 本身就不存在,會出現的錯誤其實不太能解釋狀況
出現的錯誤訊息會是:

software.amazon.awssdk.services.dynamodb.model.DynamoDBException: The provided expression refers to an attribute that does not exist in the item
參考資料
  1. Update Expression
  2. Working with Items: Java
  3. aws-doc-sdk-examples
  4. AWS SDK for Java 2.0 – Developer Preview
  5. How do I Append a string to a list using dynamodb sdk? (Java)
  6. Is it possible to combine if_not_exists and list_append in update_item

沒有留言: