如何在mongodb中获取最后N条记录?

44 浏览
0 Comments

如何在mongodb中获取最后N条记录?

我找不到任何记录这个的文档。默认情况下,find()操作会从开始获取记录。如何在mongodb中获取最后N条记录?

编辑:我还希望返回结果按照最不近期到最近期的顺序排序,而不是反过来。

admin 更改状态以发布 2023年5月20日
0
0 Comments

这个查询可以显示从最近到最久远的最后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)

0
0 Comments

如果我理解你的问题正确,你需要按升序排序。

假设你有一个名为“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);

0