java - 仅使用分区键 (NOT DUPLICATE) 从 AWS DynamoDB 中批量删除项目
问题描述
我正在尝试删除具有特定值作为主键的所有项目例如:groupName是 DynamoDB 上的主键列。有一个groupVersion列是排序键。我想删除 groupName 列值为 group123的所有项目
一个简单的mysql查询会:
delete from table XYZ where groupName = 'group123';
我尝试了下面的代码,但它总是无法删除消息:The provided key element does not match the schema (Service: DynamoDb, Status Code: 400
我试过的代码:
TableSchema<Group> TABLE_SCHEMA = StaticTableSchema.builder(Group.class)
.newItemSupplier(Group::new)
.addAttribute(String.class, a -> a.name("groupName")
.getter(schema -> schema.getGroupName())
.setter((schema, schemaName) -> {
schema.setSchemaName(schemaName);
})
.tags(primaryPartitionKey()))
.addAttribute(Long.class, a -> a.name("groupVersion")
.getter(schema -> schema.getGroupVersion())
.setter((schema, s) -> {
schema.setSchemaVersion(s);
})
.tags(primarySortKey()))
.addAttribute(String.class, a -> a.name("value")
.getter(schema -> schema.getValue())
.setter((schema, s) -> {
schema.setValue(s);
}))
.build();
Region region = Region.US_EAST_1;
DynamoDbClient ddb = DynamoDbClient.builder()
.region(region)
.enableEndpointDiscovery()
.build();
DynamoDbEnhancedClient client = DynamoDbEnhancedClient.builder()
.dynamoDbClient(ddb)
.build();
client.table(tableName, TABLE_SCHEMA).deleteItem(DeleteItemEnhancedRequest.builder()
.key(Key.builder().partitionValue("group123").build())
.build());
使用 AWS Java SDK v2。SDK的Maven版本是2.13.4
解决方案
推荐阅读
- javascript - 在桌面/移动设备上自定义 owl-carousel 2
- asp.net - 在 aspcore 中调用存储过程而不是返回自定义消息
- angular - 安全后端 API 到前端框架
- amazon-web-services - 如何将每个 AWS Step Function 的执行存储到 DynamoDB
- php - 将简单的 HTML 表解析为 php 数组的 Xpath 循环问题
- elasticsearch - ElasticSearch 获取最后 n 条不同的记录
- configuration - Kafka:动态更新 jaas 配置
- r - R igraph:将两个图与其边权重组合
- android - OnActivityResult 没有在 Activity 的 Fragment 中被调用
- javascript - 使用 Gutenberg getEntityRecords 获取 woocommerce 产品类别