Nic*_*ick 7 java nosql amazon-dynamodb
我试图找出从Dynamo DB中的项目中删除属性的最佳方法.下面是我尝试过的,但我得到一个例外,说N类或S类型都不支持DELETE.
例外在线程"主"状态码:400,AWS服务:AmazonDynamoDB,AWS请求ID:09MRO4PVTJ8IK6OHLKSM551REJVV4KQNSO5AEMVJF66Q9ASUAAJG,AWS错误代码:ValidationException,AWS错误消息:一个或多个参数值无效:动作DELETE不支持在N型com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:544)at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:284)at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:169)在> com.amazonaws.services.dynamodb.AmazonDynamoDBClient.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);
Run Code Online (Sandbox Code Playgroud)
一个混淆点是为什么属性值对删除很重要.我真的想要删除属性名称和任何关联的值,但无法在SDK中找到适当的方法.
帮助将不胜感激.
Nic*_*ick 11
我可以发誓我已经尝试了这个但是通过用一个null值替换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);
Run Code Online (Sandbox Code Playgroud)
这也有效.
Table table = dynamoDB.getTable("users");
table.updateItem(new PrimaryKey("<MY HASH KEY NAME>", <MY HASH VALUE>), new AttributeUpdate("columnToRemove").delete());
Run Code Online (Sandbox Code Playgroud)
REMOVE - 从项目中删除一个或多个属性.