2012-02-01 60 views
9

我想用rails的amazon Dynamo DB。但我还没有找到实现分页的方法。如何在rails中使用amazon Dynamo DB时实现分页

我将使用AWS::Record::HashModel作为ORM。

这ORM支持这样的限制:

People.limit(10).each {|person| ... } 

但我不能想出如何实现按照迪纳摩DB MySQL查询。

SELECT * 
    FROM `People` 
LIMIT 1 , 30 

回答

23

您使用LIMIT发出查询。如果返回的子集不包含完整表,则返回“LastEvaluatedKey”值。您在下一个查询中将此值用作ExclusiveStartKey。等等......

来自DynamoDB Developer Guide

+2

这个答案没有考虑到DynamoDB只提供分页在一个方向上提到'LastEvaluatedKey'和'ExclusiveStartKey'(前进)。使用DynamoDB – Srle 2016-05-10 23:36:57

+0

@Srle,至少包含'previous'和'next'选项的标准分页是不可能的,您提供了使用LastEvaluatedKey和ExclusiveStartKey进行NEXT操作的方式。您可以颠倒查询的顺序并获得以前的操作。这在DynamoDB中是可用的。 – 2016-12-29 08:48:03

+0

@ nickolay.laptev您可以提供示例,要点或支持开箱即用的方向吗? – Srle 2016-12-29 09:54:53

1

您可以在查询中提供'页面大小'来设置结果集大小。 DynamoDB的响应包含'LastEvaluatedKey',它将根据页面大小指示最后一个键。如果响应不包含“LastEvaluatedKey”,则意味着没有结果可供提取。 下一次读取时使用'LastEvaluatedKey'作为'ExclusiveStartKey'。

我希望这会有所帮助。

DynamoDB Pagination