如何在mongodb中获取最后N条记录?
如何在mongodb中获取最后N条记录?
我找不到任何记录这个的文档。默认情况下,find()操作会从开始获取记录。如何在mongodb中获取最后N条记录?
编辑:我还希望返回结果按照最不近期到最近期的顺序排序,而不是反过来。
admin 更改状态以发布 2023年5月20日
这个查询可以显示从最近到最久远的最后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)
如果我理解你的问题正确,你需要按升序排序。
假设你有一个名为“x”的id或日期字段,你需要执行以下操作...
.sort()
db.foo.find().sort({x:1});
1将按升序(从旧到新)排序,-1将按降序(从新到旧)排序。
如果你使用自动创建的_id字段,它嵌入了一个日期...因此你可以使用它来排序...
db.foo.find().sort({_id:1});
这将返回所有按从旧到新排序的文档。
Natural Order
你也可以使用上面提到的自然顺序...
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);