gpt4 book ai didi

ruby - 使用 ItemsCollection#query 进行分页?

转载 作者:太空宇宙 更新时间:2023-11-03 16:34:32 25 4
gpt4 key购买 nike

目前,Ruby AWS SDK 中的 ItemCollection#query 方法返回整个数据集。我查看了 Ruby AWS SDK 源代码以了解任何分页的可能性,但最接近分页的选项是 :limit,没有分页。根据 Amazon 的 DynamoDB API(HTTP,而非 Ruby)文档,查询操作表明可以使用响应键 LastEvaluatedKey 进行分页:

Primary key of the item where the query operation stopped, inclusive of the previous result set. Use this value to start a new operation excluding this value in the new request. The LastEvaluatedKey is null when the entire query result set is complete (i.e. the operation processed the “last page”).

所以我可以通过添加 :limit 选项来进行分页,然后在我的最后一个 Item 之后对范围值进行下一个查询,但是我不知道除非我进行完整查询,否则总计数是多少。

是否有更好/更简单的方法来实现分页?

最佳答案

根据您的需要,构建一个完整的寻呼机可能需要两个请求,请参阅 Query and Scan in Amazon DynamoDB , 特别是 Count and ScannedCount :

The Amazon DynamoDB Scan and Query APIs use Count values for two distinct purposes.

In a request, set the Count parameter to true if you want Amazon DynamoDB to provide the total number of items that match the scan filter or query condition, instead of a list of the matching items.

In a response, Amazon DynamoDB returns a Count value for the number of matching items in a request. If the matching items for a scan filter or query condition is over 1MB, Count contains a partial count of the total number of items that match the request. To get the full count of items that match a request, use the LastEvaluatedKey in a subsequent request. Repeat the request until Amazon DynamoDB no longer returns a LastEvaluatedKey.

[emphasis mine]

也就是说,为了避免一开始就出现复杂的逻辑,您可能希望预先查询匹配项的数量,然后仅根据需要请求特定页面。

祝你好运!

关于ruby - 使用 ItemsCollection#query 进行分页?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9780252/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com