mongodb:如何获取最后的N个记录?
我找不到任何它已被记录在案的。 默认情况下,find()操作将从头开始获取记录。 我如何获得mongodb中的最后N个记录?
编辑:我也希望返回的结果从最近到最近排序,而不是相反。
如果我理解你的问题,你需要按升序排序。
假设你有一些名为“x”的ID或日期字段,你可以......
。分类()
db.foo.find().sort({x:1});
1将按升序排列(从最旧到最新),- 1将按降序排列(从最新到最旧)。
如果您使用自动创建的_id字段,它会嵌入一个日期...所以您可以使用它来...
db.foo.find().sort({_id:1});
这将返回从最旧到最新排序的所有文档。
自然顺序
您也可以使用上面提到的自然顺序...
db.foo.find().sort({$natural:1});
再次,根据您想要的顺序使用1或-1 。
使用.limit()
最后,在做这种广泛开放的查询时添加一个限制是一个很好的做法,所以你可以做...
db.foo.find().sort({_id:1}).limit(50);
要么
db.foo.find().sort({$natural:1}).limit(50);
使用此查询可以看到最近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)
为了获得最后的N条记录,你可以执行下面的查询:
db.yourcollectionname.find({$query: {}, $orderby: {$natural : -1}}).limit(yournumber)
如果你只想要最后一个记录:
db.yourcollectionname.findOne({$query: {}, $orderby: {$natural : -1}})
注意:代替$ natural可以使用集合中的某一列。
链接地址: http://www.djcxy.com/p/86401.html