2016-10-18 15 views
0

ゲット私は、次の構造の項目を持つテーブルがある:特定のパーティションの最新/最新のエントリ

[PartitionKey] | [RangeKey] | [Attribute] 
Id    Start  End 

は今、私はRangeKeyを知らなくても、最新または最新のエントリを取得したいです。私はちょうどPartitionKeyを知っています。最新のエントリは最新のStartです。

load機能は、RangeKeyがないため使用できません。だから私はクエリを使用する必要があります。しかし、私はどちらがどれか分かりません。

どのようなクエリがこのような問題に最適か知っていますか?

答えて

2

ソートキーは、ScanIndexForwardを使用して並べ替えることができます。

ScanIndexForwardがtrueの場合、結果が返されるのは (ソートキー値によって)です。これがデフォルトの の動作です。 ScanIndexForwardがfalseの場合、DynamoDBは結果を ソートキー値で逆順に読み取り、結果を クライアントに返します。

サンプルコード: -

以下のコードを降順にソート・キーを配置するパーティションキーによってデータを取り出します。

Table table = dynamoDB.getTable("Movies"); 

    QuerySpec querySpec = new QuerySpec(); 

    querySpec.withKeyConditionExpression("yearkey = :yearval") 
      .withValueMap(
        new ValueMap().withNumber(":yearval", yearkey)) 
      .withScanIndexForward(false); 

    IteratorSupport<Item, QueryOutcome> iterator = table.query(querySpec).iterator(); 

    while (iterator.hasNext()) { 
     Item movieItem = iterator.next(); 
     System.out.println("Movie data ====================>" + movieItem.toJSONPretty()); 
     moviesJsonList.add(movieItem.toJSON()); 
    } 
+0

ソートキーには、格納された項目の任意の属性を使用できますか?それともパーティションキーである必要がありますか? – CPA

+1

SortKeyはRangeKey以外は何もありません。あなたの場合、それは "開始"です。 – notionquest

関連する問題