DynamoDB - 查询范围键的最大值

时间:2016-03-14 09:05:22

标签: amazon-web-services amazon-dynamodb secondary-indexes

我有一个具有以下结构的DynamoDB表

    HK      |    RK      |   A1   |   A2  |   A3
(Hash Key)  | (Range Key)

我有一个本地二级索引,范围键 A3

我想找出特定的 Hash key HK A3 属性的最大值是多少。所以我像这样查询二级索引:

Map<String, AttributeValue> eav = new HashMap<>();
eav.put(":v1", new AttributeValue().withS("hash value"));
queryExpression = new DynamoDBQueryExpression<Table>()
        .withIndexName("index-name")
        .withKeyConditionExpression("HK = :v1")
        .withExpressionAttributeValues(eav)
        .withScanIndexForward(false);  //This will sort the result in descending order (w.r to range key)

queryExpression.setLimit(1);
myCollection = dynamoDBMapper.query(Table.class, queryExpression);

问题是它返回带有指定哈希键的所有记录,按范围键(A3)反向排序。我想独自获得第一张唱片。 (给定香港的A3值最大的记录)。

我尝试使用 setLimit ,但它无效。

我怎样才能做到这一点..

1 个答案:

答案 0 :(得分:1)

我使用queryPage而不是query

解决了这个问题
QueryResultPage<Lookup> res = dynamoDBMapper.queryPage(Table.class, queryExpression);

更多信息scalar