与MongoDB分页

时间:2010-01-13 11:33:09

标签: ruby pagination mongodb

我一直在使用MongoDB和RoR来存储日志记录数据。我正在提取数据并寻找结果页面。有没有人使用MongoDB进行分页,或者知道任何可能有助于我开始使用的在线资源?

干杯

EEF

1 个答案:

答案 0 :(得分:37)

MongoDB中的分页可以使用limit()skip()的组合来完成。

例如,假设我们的活动数据库中有一个名为users的集合。

>> db.users.find().limit(3)

这将为我们检索前三个用户文档的列表。请注意,这与写作基本相同:

>> db.users.find().skip(0).limit(3)

对于接下来的三个,我们可以这样做:

>> db.users.find().skip(3).limit(3)

这会跳过前三个用户记录,并为我们提供接下来的三个记录。如果您的数据库中只有一个用户,请不要担心; MongoDB非常智能,只返回存在的数据,不会崩溃。

这可以像这样概括,并且大致相当于您在Web应用程序中的操作。假设我们有名为PAGE_SIZE的变量设置为3,并且任意PAGE_NUMBER

>> db.users.find().skip(PAGE_SIZE * (PAGE_NUMBER - 1)).limit(PAGE_SIZE)

我不能直接谈论如何在Ruby on Rails中使用这个方法,但我怀疑Ruby MongoDB库暴露了这些方法。