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

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


当前回答

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

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

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

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

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

其他回答

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

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

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

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

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

使用.sort()和.limit()

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

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

根据集合的大小,排序、跳过等操作可能会非常慢。

如果您根据某些标准对集合进行索引,则可以获得更好的性能;然后你可以使用min()游标:

首先,使用db.collectionName索引集合。setIndex(yourIndex) 你可以使用升序或降序,这很酷,因为你总是想要“最后N项”……所以如果你按降序索引,就相当于得到“前N项”。

然后你找到你的集合的第一项,并使用它的索引字段值作为搜索的最小条件,如下所示:

db.collectionName.find().min(minCriteria).hint(yourIndex).limit(N)

下面是min()游标的引用:https://docs.mongodb.com/manual/reference/method/cursor.min/

查看查询:排序和自然顺序,http://www.mongodb.org/display/DOCS/Sorting+and+Natural+Order 以及游标方法下的sort() http://www.mongodb.org/display/DOCS/Advanced+Queries

如果你使用MongoDB compass,你可以使用sort field来过滤,