9

Dynamo DB の項目から属性を削除する最良の方法を見つけようとしています。以下は私が試したものですが、DELETEはタイプNまたはSのいずれでもサポートされていないという例外が発生します。

スレッド「メイン」ステータス コードの例外: 400、AWS サービス: AmazonDynamoDB、AWS リクエスト ID: 09MRO4PVTJ8IK6OHLKSM551REJVV4KQNSO5AEMVJF66Q9ASUAAJG、AWS エラー コード: ValidationException、AWS エラー メッセージ: 1 つ以上のパラメーター値が無効でした: アクション DELETE は、タイプ N ではサポートされていませんcom.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:544) com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:284) 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);

紛らわしい点の 1 つは、なぜ属性値が削除にとって重要なのかということです。属性名とそれに関連付けられた値を削除したいのですが、SDK でそれを行う適切な方法が見つかりませんでした。

助けていただければ幸いです。

4

3 に答える 3

12

私はすでにこれを試したと断言できましたが、AttributeValueをnull値に置き換えることで機能します:

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);
于 2012-02-07T19:49:46.483 に答える
8

これも機能します。

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

または、アイテムの更新で式を使用することもできます。

REMOVE - 項目から 1 つ以上の属性を削除します。

于 2015-09-14T13:36:55.290 に答える