gpt4 book ai didi

amazon-web-services - Range key未知时如何查询DynamoDB

转载 作者:行者123 更新时间:2023-12-04 01:50:40 26 4
gpt4 key购买 nike

我有一个包含以下 KeySchema 的表:

KeySchema: [
{AttributeName: USER_ID,KeyType: HASH},
{AttributeName: COMPLETED,KeyType: RANGE}],

用户 ID 只是一个整数,但 COMPLETED 是记录创建时间的时间戳。

我正在尝试使用此代码检索记录:

Item item = tbl.getItem("USER_ID", "4216634082");

但是我得到这个错误:

AmazonDynamoDBException: The provided key element does not match the schema (Service: AmazonDynamoDBv2; Status Code: 400; Error Code: ValidationException...

由于范围键是时间戳,在找到记录之前我不知道它是什么。我如何实现这一点?

最佳答案

您正在调用 getItem,这是通过其键查找项目 - 如果键架构定义了两者,则这需要散列和范围组件。

如果要获取具有特定哈希值(按范围键排序)的所有项目,则需要使用查询。例如:

Table table = dynamoDB.getTable("YourTable");

QuerySpec spec = new QuerySpec()
.withKeyConditionExpression("USER_ID = :user_id")
.withValueMap(new ValueMap()
.withString(":user_id", "4216634082"))

ItemCollection<QueryOutcome> items = table.query(spec);

参见 http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html用于概念和 http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryingJavaDocumentAPI.html获取详细的 Java SDK 文档。

(从文档链接中提取的示例)

关于amazon-web-services - Range key未知时如何查询DynamoDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40406289/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com