我找不到任何地方有这样的记录。默认情况下,find()操作将从头获取记录。我怎么能得到mongodb的最后N条记录?
编辑:我也想返回的结果从最近到最近的顺序,而不是相反。
我找不到任何地方有这样的记录。默认情况下,find()操作将从头获取记录。我怎么能得到mongodb的最后N条记录?
编辑:我也想返回的结果从最近到最近的顺序,而不是相反。
当前回答
如果你使用MongoDB compass,你可以使用sort field来过滤,
其他回答
如果你使用MongoDB compass,你可以使用sort field来过滤,
查看查询:排序和自然顺序,http://www.mongodb.org/display/DOCS/Sorting+and+Natural+Order 以及游标方法下的sort() http://www.mongodb.org/display/DOCS/Advanced+Queries
db.collection.find().hint( { $natural : -1 } ).sort(field: 1/-1).limit(n)
根据mongoDB文档:
您可以指定{$natural: 1}强制查询执行转发集合扫描。 您还可以指定{$natural: -1}来强制查询执行反向收集扫描。
根据集合的大小,排序、跳过等操作可能会非常慢。
如果您根据某些标准对集合进行索引,则可以获得更好的性能;然后你可以使用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/
为了得到最近的N条记录,你可以执行以下查询:
db.yourcollectionname.find({$query: {}, $orderby: {$natural : -1}}).limit(yournumber)
如果你只想要最后一张唱片:
db.yourcollectionname.findOne({$query: {}, $orderby: {$natural : -1}})
注意:您可以使用集合中的一列来代替$natural。