2015-12-14 3 views
5

は、次の表を考えてみたすべての項目を削除します。DynamoDBのは:同じハッシュキー

Table (documentId : Hash Key, userId: Range Key) 

は、どのように私は、好ましくは、アイテムを取得することなく、同じdocumentIdとを持つすべての項目を削除するコードを記述することができます。

答えて

5

現在、ハッシュキーを渡すだけですべてのアイテムを削除することはできません。ハッシュ+レンジが必要なアイテムを削除するには、それがユニークになるためです。

You have to know both your (hash + range) to delete the item. 

編集:ここではhttp://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteItem.html#API_DeleteItem_RequestSyntax

は明らかに我々は両方のハッシュ(パーティションキー)を渡すとしなければならないことを言う「KEY」の説明をお読みくださいDynamoDBのドキュメントから参照リンクは、ある範囲(ソートキー)アイテムを削除します。

+0

参照番号 – Hans

+0

@Hansと言えば、私は非常に感謝しています。私は答えを更新しました。 –

+3

これは私を驚かせました。私は、パーティションキーだけを指定することによってパーティション全体を削除するオプションを持つCassandraについてよく知っています。 –

-1

ハッシュキーのみを削除する場合は、最初にレコードを照会してから、batchDeleteを使用してすべてのレコードを削除する必要があります。

HashMap<String, AttributeValue> eav = new HashMap<String, AttributeValue>(); 
eav.put(":v1", new AttributeValue().withS(value)); 
DynamoDBQueryExpression<DocumentTable> queryExpression = new DynamoDBQueryExpression<DocumentTable>() 
      .withKeyConditionExpression("documentId = :v1") 
      .withExpressionAttributeValues(eav); 
List<DocumentTable> ddbResults = dynamoDBMapper.query(DocumentTable.class, queryExpression); 
dynamoDBMapper.batchDelete(ddbResults); 

私はdeleteItemは一度に一つだけのアイテムを削除し、両方のハッシュキーとキー範囲は、このために指定する必要があることをここで呼び出すしたいと思います。

関連する問題