2012-02-04 130 views
5

我試圖找出從Dynamo DB中的項中刪除屬性的最佳方法。下面是我試過,但我得到一個異常說,DELETE是不是一個支持線程「主」狀態代碼爲N型或S刪除DynamoDB中的屬性

例外:400,AWS服務:AmazonDynamoDB,AWS請求ID :09MRO4PVTJ8IK6OHLKSM551REJVV4KQNSO5AEMVJF66Q9ASUAAJG,AWS錯誤代碼:ValidationException,AWS錯誤消息:一個或多個參數值無效:動作DELETE不支持在com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:544)的N型 在com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:284) at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:169) at> com.amazonaws.services.dynamodb.AmazonDynamoDBCl ient.invoke(AmazonDynamoDBClient.java:675) 在> com.amazonaws.services.dynamodb.AmazonDynamoDBClient.updateItem(AmazonDynamoDBClient.java:371)

Key pk = new Key(new AttributeValue().withN(Long.toString(123))); 
AttributeValueUpdate avu = new AttributeValueUpdate(new AttributeValue().withN("555"), "DELETE"); 
Map<String, AttributeValueUpdate> m = new HashMap<String, AttributeValueUpdate>(); 
m.put(String.valueOf(555), avu); 
UpdateItemRequest uir = new UpdateItemRequest("users", pk, m); 
dynamoDB.updateItem(uir); 

一個混亂的點就是爲什麼該屬性值的事項刪除。我真的想刪除一個屬性名稱和任何關聯的值,但找不到在SDK中執行此操作的適當方法。

幫助將不勝感激。

+1

您能否發佈實際例外 – 2012-02-04 16:21:34

+0

@Layble:很高興您設法自己解決這個問題 - 您能否將您的解決方案發布爲答案並接受它?遵循自己的問題是非常合理和理想的,只要它首先是一個真正開放的問題。謝謝:) – 2012-02-06 11:53:19

回答

9

我可以發誓我已經嘗試過這一點,但與它的工作原理空值替換的AttributeValue:

Key pk = new Key(new AttributeValue().withN(Long.toString(123))); 
AttributeValueUpdate avu = new AttributeValueUpdate(null, "DELETE"); 
Map<String, AttributeValueUpdate> m = new HashMap<String, AttributeValueUpdate>(); 
m.put(String.valueOf(555), avu); 
UpdateItemRequest uir = new UpdateItemRequest("users", pk, m); 
dynamoDB.updateItem(uir); 
+0

+1跟進您的解決方案,謝謝! – 2012-02-26 13:15:47

3

這也適用。

Table table = dynamoDB.getTable("users"); 
table.updateItem(new PrimaryKey("<MY HASH KEY NAME>", <MY HASH VALUE>), new AttributeUpdate("columnToRemove").delete()); 

you can even use Expressions在項目更新中。

REMOVE - 刪除項目中的一個或多個屬性。