Han*_*ans 11 .net c# java amazon-web-services amazon-dynamodb
请考虑下表:
Table (documentId : Hash Key, userId: Range Key)
Run Code Online (Sandbox Code Playgroud)
如何编写代码以删除具有相同项目的所有项目documentId,最好不检索项目.
Har*_*ara 15
目前,你不能仅仅通过将哈希键删除所有项目,将其删除,需要哈希+的范围,因为那是什么使得它独特的项目.
You have to know both your (hash + range) to delete the item.
Run Code Online (Sandbox Code Playgroud)
编辑:以下是DynamoDB文档的参考链接http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteItem.html#API_DeleteItem_RequestSyntax
请阅读"KEY"的说明,清楚地说我们必须通过Hash(分区键)和Range(排序键)来删除项目.
小智 8
如果只想通过hash key删除,需要先查询记录,再使用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);
Run Code Online (Sandbox Code Playgroud)
我想在这里指出一次deleteItem只删除一个项目,并且需要为此指定散列键和范围键。