gpt4 book ai didi

java - DynamoDBMapper scanPage 没有返回结果

转载 作者:行者123 更新时间:2023-12-01 17:34:24 28 4
gpt4 key购买 nike

当我尝试从 DynamoDB 表获取一组分页数据时,它可以正常工作,但前提是它要查找的数据位于表的顶部。如果它更深入(我按 user_alias 排序数据,每个别名有 100 个元素),它不会返回任何内容。

AmazonDynamoDB dynamo = AmazonDynamoDBClientBuilder.standard()
.withCredentials(
new AWSStaticCredentialsProvider(
new BasicAWSCredentials(
"XXXXXXX",
"XXXXXXX")))
.build();
DynamoDBMapper mapper = new DynamoDBMapper(dynamo);
Map<String, AttributeValue> expressionAttributeValues = new HashMap<>();
expressionAttributeValues.put(":user", new AttributeValue().withS(request.getUser().getAlias()));
ScanResultPage<DatabaseFeedObject> feedEntry;
feedEntry = mapper.scanPage(
DatabaseFeedObject.class,
new DynamoDBScanExpression()
.withFilterExpression("user_alias = :user")
.withLimit(request.getLimit())
.withExpressionAttributeValues(expressionAttributeValues));

//feedEntry.getResults() returns nothing,
//but feedEntry.getLastEvaluatedKey() returns an
//element in the table that does not fit the original query.

我的第一个想法是继续运行查询,直到达到我想要的限制,但这很快就会变得低效且成本高昂。还有其他办法吗?

最佳答案

我最近发现了扫描和查询之间的区别。扫描将简单地解析整个表,而查询将使用类似 SQL 的行为来查找您需要的内容。我改为迁移到mapper.queryPage(),并且效果很好。实际上比之前还要快。我将不选择“已接受的答案”,因此如果有人想提供其他答案,请成为我的客人。

关于java - DynamoDBMapper scanPage 没有返回结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61066218/

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