MongoDB分页/按文档ID获取页面

时间:2015-09-01 16:04:06

标签: mongodb

使用MongoDB我收集了消息

我一直在使用.skip().limit()来检索属于当前页面的消息

例如:

var pageSize = 20;
var pageNumber = 1;
db.messages.find({}).sort({ created_date: -1 }).skip(pageSize*(pageNumber-1)).limit(pageSize, callback);

我的问题是,如果我拥有特定消息的 id ,那么检索结果“页面”的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

解决方案可以通过_id检索文档的“created_date”,然后计算在他之前存在多少文档并将数字除以页面大小。

shell上的例子;如果'XXX'是给定的ID,则“page”将成为您记录的页面:

var pageSize = 20
vat tgId = 'XXX'
var when = db.messages.findOne({_id: tgId}, {created_date: 1})['created_date']
var page = Math.ceil(db.messages.find({created_date: {$lt: when}}).count() / pageSize)