首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仅使用Dynamodb的分区键获取所有项

仅使用Dynamodb的分区键获取所有项
EN

Stack Overflow用户
提问于 2021-12-09 15:48:51
回答 1查看 2.2K关注 0票数 1

如何使用Amazon模块获取只匹配分区键(表有排序键)的所有项。我使用GetItemRequest查询没有排序键。

代码语言:javascript
复制
GetItemRequest getItemRequest = getRequest(externalId);
IDMapping.from(dynamoDB.getItem(getItemRequest).item());

当我只使用GetItemRequest分区键进行查询时,会得到以下错误。

Caused by: software.amazon.awssdk.services.dynamodb.model.DynamoDbException: The provided key element does not match the schema (Service: DynamoDb, Status Code: 400, Request ID: 6C9BTJCJOTS7I5FI1EBJLIQK3RVV4KQNSO5AEMVJF66Q9ASUAAJG, Extended Request ID: null)

我在夸克应用程序中使用以下依赖项。

代码语言:javascript
复制
<dependency>
    <groupId>software.amazon.awssdk</groupId>
    <artifactId>dynamodb</artifactId>
</dependency>

这个查询可以使用aws cli、aws控制台,也可以使用旧的java。

有什么办法可以克服这个问题吗?

提前谢谢

EN

回答 1

Stack Overflow用户

发布于 2021-12-10 09:14:32

GetItem请求需要完整的密钥(分区和排序)。你可以用查询请求做你想做的事。

代码语言:javascript
复制
    HashMap<String, String> nameMap = new HashMap<String, String>();
    nameMap.put("#yr", "year");

    HashMap<String, Object> valueMap = new HashMap<String, Object>();
    valueMap.put(":yyyy", 1985);

    QuerySpec querySpec = new QuerySpec().withKeyConditionExpression("#yr = :yyyy").withNameMap(nameMap)
        .withValueMap(valueMap);

    items = table.query(querySpec);

此示例用于具有复合键的表:

  • 年份-分区密钥。属性类型为number。
  • 标题-排序键。属性类型为字符串。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70292785

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档