DynamoDB:从最后N个记录中获取按分区键过滤的记录

时间:2016-03-30 15:39:19

标签: amazon-web-services amazon-dynamodb nosql

我是dynamoDB的新手。我想从表格中获取最新的N条记录。

我的表格ChatDataroomNo作为分区键,seq作为排序键。

  • ChatData存储聊天消息。
  • roomNo是聊天室的电话号码。它并不是唯一的。
  • seq是一个序号,用于为每条消息提供唯一值

然后,我想获得最新的消息特定房间。

例如,存在20个聊天室(1个表格20)。 100个消息通体房间(seq从1到100)。 在这种情况下,如何使用JAVA SDK获取与第4个聊天室相关的最新10条消息?

1 个答案:

答案 0 :(得分: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