默認情況下,如果具有指定索引的對象不存在,DynamoDB將創建一個新條目。有沒有辦法阻止這種情況發生?我可以在更新之前查詢該表的密鑰,但在一次請求中完成所有操作將很不錯。DynamoDB:僅當它存在時才更新的項目
回答
您可能在尋找attribute_not_exists
簽入Condition Expressions
。
將此條件表達式與PutItem一起使用時,DynamoDB將首先查找主鍵與要寫入項目相匹配的項目。只有當搜索沒有返回時,結果中才存在分區鍵。否則,attribute_not_exists函數上述失敗,則寫在http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.SpecifyingConditions.html防止
更多
使用條件表達式id = :id
其中id
是屬性名稱(或在您的情況下的主鍵名稱),並:id
是值(鍵您要更新的項目)。
條件表達式總是在任何寫入之前進行評估。如果該表達式不計算爲true
(如果該關鍵字不存在或不同),該表達式不會更新或放入新項目。
關鍵是ConditionExpression
根據您正在執行的操作在不同的數據集上進行審查PutItem 或UpdateItem。
PutItem。
當設置ConditionExpression
DynamoDB將檢查您在任何Key行上的條件 - 如果在表上使用range屬性,則爲多行,如果僅爲表使用散列,則爲1。
記住DynamoDB PutItem操作必須檢查您傳遞的密鑰是否已經存在,因此在此檢查您的條件時不需要額外的成本。
例如,如果您的customer_id/contact_email鍵定義了CUSTOMER_CONTACTS表,並且不想創建重複項,則可以設置ConditionExpression = "#contact_email <> :email"
。在這種情況下,如果對指定的散列值使用相同的電子郵件(範圍屬性),則PutItem操作將失敗,並出現ConditionalCheckFailedException。
但不要指望檢查遠離哈希行的項目屬性。沒有意義讓DynamoDB掃描所有表格來檢查您的狀況。
更新項目。
如果嘗試的條件與前面的示例ConditionExpression = "#contact_email <> :email"
相同,則操作始終覆蓋而不會觸發異常。爲什麼?因爲UpdateItem只是查看1個項目,即您的Key指定的項目。
使用UpdateItem時,ConditionExpression只會查看1行,即您必須設置的Key值所指定的行。沒有辦法檢查你的任何其他錶行的條件。
- 1. DynamoDB PHP更新項目
- 2. DynamoDB:檢查項目更新
- 3. 僅當它們比某個日期更新時才更新分析對象?
- 4. 僅當子項不存在時,才從父項刪除行
- 5. 與更新的NodeJS項目DynamoDB
- 6. 更新添加dynamodb屬性的項目
- 7. 如何僅在MongoDB文檔字段存在時才更新它們?
- 8. 使用亞馬遜dynamodb更新項目
- 9. DynamoDB - 更新項目由GSI(PHP)
- 10. boto3 dynamodb更新項目與預期值
- 11. 只有在新屬性大於現有項目的情況下,DynamoDb纔會更新項目
- 12. 僅當使用shell腳本存在時才刪除目錄
- 13. 僅當存在多個項目時才通過CSS對列表進行編號
- 14. RecyclerView僅在向下滾動時才刷新項目
- 15. 僅當數據項存在3次或更多次時才顯示
- 16. primefaces rowEdit僅當事件成功時才更新表的事件
- 17. XAML ListView,如何僅當項目可見時才加載圖像
- 18. 僅當用戶點擊項目時才加載內容。
- 19. 僅當項目不重複時纔將項目添加到ListView中
- 20. SQL - 僅當所有記錄匹配時才更新字段
- 21. 僅當步驟通過時數據才被正確更新
- 22. 僅當另一列匹配時才更新記錄?
- 23. DynamoDB TTL - 刪除項目時
- 24. 僅當通過C#更新時才從Azure Blob存儲獲取文件?
- 25. ObjectListView(快速) - 僅在相同的項目不存在的情況下才添加新項目
- 26. 更新Jekyll項目當地
- 27. clojure:只有當所有密鑰都存在時才更新
- 28. 您的項目包含錯誤 - 當它不存在時
- 29. 當且僅當用戶註銷時才使用Django的緩存?
- 30. 僅當它們存在於Postgres中時纔會與JSON相關聯SQL
你可以用條件表達式來做到這一點。文檔在這裏http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.SpecifyingConditions。html –