获得N个最新记录

时间:2013-06-26 11:01:58

标签: meteor

如何使用流星mongodb获取N条最新记录?

我知道我可以使用正常的mongodb db.foo.find().sort({_id:1});这样做,所以我认为这适用于meteor:collection.find({chatroom: Session.get("room")}, {sort: {_id:1}, limit: N })

但这只会返回一些“随机”文档。我猜他们是具有最低_id值的10条记录,如_id = aaaaa和_id = aaaab。

我在这里缺少什么?在正常的mongodb中它的超级性!?

2 个答案:

答案 0 :(得分:9)

尝试使用mongoDB的$natural排序说明符。

collection.find({chatroom: Session.get("room")}, {sort: {$natural : 1}, limit: N });

自然顺序是数据库将文档存储在磁盘上的顺序。通常是一个插入订单。

我使用date_created值进行正常排序。因为当您对现有文档执行update操作时,自然顺序有时会发生变化。

答案 1 :(得分:4)

我也遇到限制(我认为这是一个Meteor bug)。我最后写了这个函数:

Template.content.messages = function () {
    var items = Messages.find({}, {sort: {timestamp : 1} }).fetch();
    return items.slice(-15);
}

时间戳字段的定义如下:

timestamp: new Date().getTime()