次の構造を持つ 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を試してみましたが、うまくいきません。
どうすればこれを達成できますか..