2016-10-18 45 views
0

的最新/最新的項目我有一個表結構如下的內容:獲取特定分區

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

現在我想獲得最新的或最新的項目,不知道RangeKey。我只知道PartitionKey。最新的條目具有最新的Start時間。

我不能使用load函數,因爲缺少RangeKey。所以我必須使用查詢。但我不知道哪一個。

你知道哪個查詢最適合這樣的問題嗎?

回答

2

可以按照ScanIndexForward的順序排列分揀鍵。

如果ScanIndexForward爲true,DynamoDB將按照 的順序返回結果(按排序鍵值存儲)。這是默認的 行爲。如果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

排序鍵不過是RangeKey。在你的情況下,它是「開始」。 – notionquest