2016-10-18 3 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

관련 문제