8

如何使用流星 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 中,它的超级简单?!

4

2 回答 2

9

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

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

自然顺序是数据库在磁盘上存储文档的顺序。通常是广告订单。

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

于 2013-06-26T11:59:13.437 回答
4

我也陷入了限制(我认为这是一个 Meteor 错误)。我最终写了这个函数:

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

时间戳字段定义如下:

timestamp: new Date().getTime()
于 2013-07-23T14:15:42.297 回答