使用MongoDB我收集了消息。
我一直在使用.skip()
和.limit()
来检索属于当前页面的消息。
例如:
var pageSize = 20;
var pageNumber = 1;
db.messages.find({}).sort({ created_date: -1 }).skip(pageSize*(pageNumber-1)).limit(pageSize, callback);
我的问题是,如果我拥有特定消息的 id ,那么检索结果“页面”的最佳方法是什么?
答案 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)