如何使用流星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中它的超级性!?
答案 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()