2015-12-14 1 views

Antwort

5

Derzeit können Sie nicht alle Elemente löschen, indem Sie einfach den Hash-Schlüssel übergeben, um ein Element zu löschen, für das Hash + Range erforderlich ist, da dies das Besondere ist.

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

Edit: Hier ist die Referenzverbindung von DynamoDB Dokumentation http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteItem.html#API_DeleteItem_RequestSyntax

Bitte die Erklärung des "KEY" gelesen, der klar sagt, dass wir beide Hash (Partition Key) passieren muss und Range (Sort Key) um den Artikel zu löschen.

+0

Ich werde sehr dankbar sein, wenn Sie die Referenz – Hans

+0

@Hans Ich habe die Antwort aktualisiert, wenn Sie das Gefühl, dass es richtig ist, können Sie als Antwort markieren. –

+3

Das hat mich überrascht. Ich bin vertrauter mit Cassandra, das die Möglichkeit hat, eine ganze Partition durch Angabe nur des Partitionsschlüssels zu löschen. –

-1

Wenn Sie nur mit dem Hash-Schlüssel löschen möchten, müssen Sie zuerst die Datensätze abfragen und anschließend alle Datensätze mit batchDelete löschen.

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); 

Ich mag würde hier rufen, dass deleteItem nur ein Element löscht zu einem Zeitpunkt, und beide Hash-Schlüssel und Schlüsselbereich muss für diese angegeben werden.