1

次の構造を持つ DynamoDB テーブルがあります

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

範囲キーA3であるローカル セカンダリ インデックスがあります。

特定のハッシュキー 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) で逆ソートされた、指定されたハッシュ キーを持つすべてのレコードを返すことです。一人で初記録を取りたい。(特定の HK の A3 の最大値を持つレコード)。

setLimitを試してみましたが、うまくいきません。

どうすればこれを達成できますか..

4

1 に答える 1