我找不到任何地方有这样的记录。默认情况下,find()操作将从头获取记录。我怎么能得到mongodb的最后N条记录?

编辑:我也想返回的结果从最近到最近的顺序,而不是相反。


当前回答

你可能想要使用find选项: http://docs.meteor.com/api/collections.html#Mongo-Collection-find

db.collection.find({}, {sort: {createdAt: -1}, skip:2, limit: 18}).fetch();

其他回答

为了得到最近的N条记录,你可以执行以下查询:

db.yourcollectionname.find({$query: {}, $orderby: {$natural : -1}}).limit(yournumber)

如果你只想要最后一张唱片:

db.yourcollectionname.findOne({$query: {}, $orderby: {$natural : -1}})

注意:您可以使用集合中的一列来代替$natural。

最后添加的N条记录,从最近的到最近的,可以用这个查询看到:

db.collection.find().skip(db.collection.count() - N)

如果你想把它们的顺序颠倒:

db.collection.find().sort({ $natural: -1 }).limit(N)

如果你安装了Mongo-Hacker,你还可以使用:

db.collection.find().reverse().limit(N)

如果你厌倦了一直写这些命令,你可以在你的~/.mongorc.js中创建自定义函数。如。

function last(N) {
    return db.collection.find().skip(db.collection.count() - N);
}

然后在mongo shell中输入last(N)

使用.sort()和.limit()

按升序或降序使用Sort,然后使用limit

db.collection.find({}).sort({ any_field: -1 }).limit(last_n_records);

最后一个函数应该是sort,而不是limit。

例子:

db.testcollection.find().limit(3).sort({timestamp:-1}); 

你可以使用sort(), limit(),skip()从任何跳过的值开始获得最后N个记录

db.collections.find().sort(key:value).limit(int value).skip(some int value);