2016-03-30 16 views
1

dynamoDBの新機能です。私はテーブルから最新のNレコードを取得したい。DynamoDB:パーティションキーでフィルタリングされた最後のNレコードから取得

私のテーブルChatDataは、パーティションキーとしてroomNo、ソートキーとしてseqです。

  • ChatDataはチャットメッセージを格納します。
  • roomNoはチャットルームの番号です。ユニークではありません。
  • seqは連続番号である、そして、ユニークな値に各メッセージ

を与えるために、私は、最新のメッセージ特定roomNoを取得したいです。

たとえば、20のチャットルームが存在します(1つのフォーム20)。そして、100のメッセージがすべての部屋(1から100までのseq)。 この場合、JAVA SDKを使用して最新の10個のメッセージを4番目のチャットルームに関連付けるにはどうすればよいですか?

答えて

1

解決しました。 私はQueryMapperqueryPageメソッドを使いました。

多分、多くの人が同じような疑問に悩まされているので、コードスニペットをアップロードします。

 ChatDataDemo demo = new ChatDataDemo(); 
     demo.setRoomNo(roomNo); 
     DynamoDBQueryExpression<ChatDataDemo> queryExpression = new DynamoDBQueryExpression<ChatDataDemo>() 
       .withLimit(limit).withHashKeyValues(demo).withScanIndexForward(false); 

     QueryResultPage<ChatDataDemo> items = mapper.queryPage(ChatDataDemo.class, 
       queryExpression); 



     for (int i = 0; i < items.getResults().size(); i++) { 
      ChatDataDemo d = items.getResults().get(i); 
      System.out.println(d.getSeq() +"/" +d.getMessage()); 
     } 

     //Maybe need to reverse itemResults using Collection.reverse in next 
関連する問題