未知完整排序键时,如何从DynamoDB检索数据?
解决DynamoDB按分区键+排序键前缀查询的问题
你之前的报错根源是用了keyEqualTo——这个方法要求同时指定完整的分区键和排序键做精确匹配,但你的需求是仅知道分区键和排序键前缀,所以得换用beginsWith条件构建查询。
针对你的代码结构,修改后的查询代码如下:
// 构建分区键 Key partitionKey = Key.builder() .partitionValue("KEY#" + id) .build(); // 构建查询条件:分区键匹配,排序键以指定前缀开头 QueryConditional queryConditional = QueryConditional.beginsWith(partitionKey, "KEY_SORT#"); // 执行查询 QueryEnhancedRequest request = QueryEnhancedRequest.builder() .queryConditional(queryConditional) .build(); // 获取查询结果 Iterable<YourEntityClass> results = table.query(request).items();
关键说明:
beginsWith是DynamoDB专为排序键前缀匹配设计的查询条件,完全适配你只知道排序键前缀的场景- 你的排序键格式为
KEY_SORT#name,所以前缀固定为KEY_SORT#,确保和实际存储的排序键开头完全一致 - 该查询会返回对应分区键下,所有排序键以
KEY_SORT#开头的条目,无需知道完整的排序键值
内容的提问来源于stack exchange,提问作者user15499060
相关产品推荐
相关产品推荐

