2015-12-14 3 views

ответ

5

В настоящее время вы не можете удалить все элементы, просто передав хэш-ключ, чтобы удалить элемент, для которого требуется хэш + диапазон, потому что это то, что он делает уникальным.

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

Edit: Вот ссылка ссылка от DynamoDB документации http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteItem.html#API_DeleteItem_RequestSyntax

Пожалуйста, прочитайте объяснение «KEY», который четко говорит, что мы должны пройти оба хэша (Partition Key) и диапазон (Sort Key) для удаления элемента.

+0

Я буду очень благодарен, если вы упомянете ссылку – Hans

+0

@ Я обновил ответ, если вы считаете, что это правильно, вы можете отметить как ответ. –

+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 удаляет только один пункт, в то время как и хэш-ключ и ключ должен быть диапазон, указанный для этого.

Смежные вопросы