📅  最后修改于: 2020-11-28 14:04:41             🧑  作者: Mango
DynamoDB不提供聚合功能。您必须创造性地使用查询,扫描,索引和各种工具来执行这些任务。综上所述,在这些操作中查询/扫描的吞吐量开销可能很大。
您还可以选择将库和其他工具用于首选的DynamoDB编码语言。在使用之前,请确保它们与DynamoDB兼容。
利用结果的升序/降序,Limit参数以及所有设置顺序的参数来查找最大值和最小值。
例如-
Map eaval = new HashMap<>();
eaval.put(":v1", new AttributeValue().withS("hashval"));
queryExpression = new DynamoDBQueryExpression()
.withIndexName("yourindexname")
.withKeyConditionExpression("HK = :v1")
.withExpressionAttributeValues(values)
.withScanIndexForward(false); //descending order
queryExpression.setLimit(1);
QueryResultPage res =
dynamoDBMapper.queryPage(Table.class, queryExpression);
使用DescribeTable可以获取表项的计数,但是请注意,它提供了过时的数据。另外,利用Java getScannedCount方法。
利用LastEvaluatedKey确保提供所有结果。
例如-
ScanRequest scanRequest = new ScanRequest().withTableName(yourtblName);
ScanResult yourresult = client.scan(scanRequest);
System.out.println("#items:" + yourresult.getScannedCount());
在处理之前,利用索引和查询/扫描来检索和过滤值。然后只需通过一个对象对这些值进行操作。