2015-12-14 12 views

risposta

5

Attualmente non è possibile eliminare tutti gli elementi semplicemente passando il tasto hash, per eliminare un elemento richiede hash + intervallo perché è ciò che rende univoco.

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

Edit: Ecco il link di riferimento dalla documentazione DynamoDB http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteItem.html#API_DeleteItem_RequestSyntax

Si prega di leggere la spiegazione del "KEY", che dice chiaramente che dobbiamo passare sia Hash (chiave di ripartizione) e Range (Sort Key) per cancellare l'oggetto.

+0

Sarò molto grato se si menziona il riferimento – Hans

+0

@Hans Ho aggiornato la risposta, se ritieni che sia corretta puoi contrassegnare come risposta. –

+3

Questo mi ha sorpreso. Sono più familiare con Cassandra, che ha la possibilità di cancellare un'intera partizione specificando solo la chiave di partizione. –

-1

Se si desidera eliminare solo tramite la chiave hash, è necessario prima eseguire una query sui record e quindi utilizzare batchDelete per eliminare tutti i record.

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

Vorrei richiamare qui che deleteItem elimina solo un elemento alla volta ed entrambi tasto cancelletto e le esigenze fondamentali gamma da specificare per questo.

Problemi correlati