DynamoDb:删除具有相同哈希键的所有项目
2022-09-01 15:29:29
请考虑下表:
Table (documentId : Hash Key, userId: Range Key)
我如何编写一个代码来删除所有具有相同且最好不检索项目的项目。documentId
请考虑下表:
Table (documentId : Hash Key, userId: Range Key)
我如何编写一个代码来删除所有具有相同且最好不检索项目的项目。documentId
目前,您无法仅通过传递哈希键删除所有项目,要删除需要哈希+范围的项目,因为这就是使其唯一的原因。
You have to know both your (hash + range) to delete the item.
编辑:这是 DynamoDB 文档中的参考链接 http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteItem.html#API_DeleteItem_RequestSyntax
请阅读“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);
我想在这里指出,一次只删除一个项目,并且需要为此指定哈希键和范围键。deleteItem