我是dynamoDB的新手。我想从表格中获取最新的N条记录。
我的表格ChatData
以roomNo
作为分区键,seq
作为排序键。
ChatData
存储聊天消息。roomNo
是聊天室的电话号码。它并不是唯一的。seq
是一个序号,用于为每条消息提供唯一值然后,我想获得最新的消息特定房间。
例如,存在20个聊天室(1个表格20)。 100个消息通体房间(seq从1到100)。 在这种情况下,如何使用JAVA SDK获取与第4个聊天室相关的最新10条消息?
答案 0 :(得分:1)
QueryMapper
和queryPage
方法。
也许有很多人陷入了类似的问题,所以我上传了我的代码片段。
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