Ibr*_*him 6 javascript node.js amazon-dynamodb dynamodb-queries
我有一个存储在DynamoDB中的文档列表。数据库中存储了超过10,000 个文档。我在请求时已将限制设置为100。DynamoDB做得很好,它返回了前100 个文档并LastEvaluatedKey获取了接下来的100 个文档。
这里的问题是我还希望 DynamoDB返回用于分页目的的总页数。在本例中,由于我有10,000 个文档,因此应该返回100(分页数)
现在我所做的是通过循环查询来手动计数,直到它不返回给我LastEvaluatedKey。将已完成的循环次数相加即可得到总页数。但我相信还有更好的方法。
Mik*_*scu 12
正如另一个答案已正确解释的那样,没有有效的方法来获取 DynamoDB 查询或扫描操作的总结果计数。因此,没有有效的方法来获取总页数。
\n\n然而,我想指出的是,现代 UI 已经从经典的分页转向无限滚动设计模式。当列表滚动时,结果的 \xe2\x80\x9cnext page\xe2\x80\x9d 会按需加载。这可以通过 DynamoDB 来实现。您仍然可以显示离散页面,但无法先验地显示有多少结果或有多少页面。这\xe2\x80\x99s是DynamoDB当前的缺点。
\n“ Scan”(读取整个表)和“ Query”(读取具有相同分区键的所有项目)操作都不会返回对总结果数的估计。在某些情况下(例如,当FilterExpression提供 a 时),DynamoDB 没有有效的方法来进行此估计。在其他情况下,DynamoDB 可能有办法提供此信息,但事实并非如此。
如果我理解正确的话,您想要Scan整个表,而不需要过滤器。就像我说的,Scan它本身并没有给你表中的项目数量。但是您可以使用 找到这个数字DescribeTable,它返回一个“ ItemCount”属性,这是对表中项目总数的估计,它可能不是完全最新的,但对于您的需求(如果您想要某种进度报告的估算,则不需要 100% 准确)。
如果您确实需要准确且最新的分区或整个表中的项目计数,您始终可以尝试将此类计数器作为单独的数据进行维护。正确执行此操作并非易事,并且会对性能产生影响,但在某些用例(例如,很少的写入和大量的读取)中可能很有用。
| 归档时间: |
|
| 查看次数: |
6772 次 |
| 最近记录: |