当前位置: 首页 > 知识库问答 >
问题:

DynamoDB-DynamoDBMapper查询并获取整个结果集

郑博厚
2023-03-14

我正在使用散列键查询DynamoDB表。表中的每个记录都由散列键和范围键唯一标识

DynamoDBMapper mapper;
....
MyClass myClass = new MyClass();
myClass.setHashKey(hashKey);
DynamoDBQueryExpression<MyClass> queryExpression = new DynamoDBQueryExpression<MyClass>()
                                                 .withHashKeyValues(myClass);
PaginatedQueryList<MyClass> entries = mapper.query(MyClass.class, queryExpression);
//Work with the elements of entries 

当结果集大于1MB时,如何检索其余的。我找不到任何方法来获取文档中提到的LastEvaluatedKey

共有1个答案

柳墨一
2023-03-14

用于Dynamodb映射器的AWS SDK为您处理分页。它在内部查询数据库,当您需要超过1MB的数据时,它会再次查询数据库并为您获取数据。如果您希望一次性获得完整的列表,您可以使用诸如size或将分页结果复制到列表中这样的操作,这将需要mapper获取完整的结果。简而言之,您不必担心LastEvaluatedKey及其处理,它是为您处理的。

例如,

 PaginatedQueryList<T> resultPaginatedList = dynamoDBMapper.query(getModelClass(), queryExpression);
 
 List<T> queryList = new LinkedList<>(resultPaginatedList); //--- Line1
 logger.info("Total elements found: " + queryList.size());  //--- Line2

第1行和第2行都描述了mapper将获取完整结果的操作(通过多次查询SDK处理),而不仅仅是1MB。

 类似资料:
  • 假设我有一个DynamoDB表: UserId是主键(hash),我需要将BookName设置为排序键(range),因为添加到数据库中的另一项用相同的UserId覆盖了前面的项。

  • 我有用于分页的逻辑,它工作得非常好。这个问题是为了优化/改进我是如何做某事的。 我正在运行两个查询以获得结果集。第一个查询按限制和偏移量获取所有项,第二个查询获取总计数。我需要这个总数来计算表示层中的分页链接。 我想避免运行两个查询,如果可能的话,将它们合并成一个。 例如,如果数据库中有100项,并且我运行下面的查询时为1,为20,那么查询应该返回20个结果和100个计数。我目前在两个单独的查询中

  • 获取查询对象的结果集 // 查询邮箱或密码是否正确 async checkEmailAndPassword(loginData) { // 解构查询对象中的结果 const { dataValues: {id,username,password,email} } = await this.ctx.model.User.findOne({

  • 我试图使用Lucene索引进行查询,但得到的结果为空,日志中出现以下错误, 我正在使用RDB DocumentStore,我已经检查了索引和节点是在节点表中创建的。 任何人都可以分享一些关于如何创建Lucene索引的示例代码吗?

  • 问题内容: 我有一个查询。现在,此查询当然返回一个结果集,我想要的是查询此查询的结果集,例如,我只希望上述查询具有唯一的名称。我应该提一下,我知道我可以在Query1中使用,但这只是一个示例,我的实际情况有些不同,我想知道的是是否可以查询上一个查询的结果集。我正在使用SQL Server 2012。 问题答案: 您可以使用该子句

  • 我尝试使用以下代码将PeeWee查询结果呈现为< code>JSON: 这样,我只从查询中返回一行。我很确定问题在于我使用了<code>get(),文档清楚地指出,它只返回一行。我用什么来代替<code>get() 下面的这个问题为我指明了正确的方向,但也是使用 Peewee模型到JSON