为了账号安全,请及时绑定邮箱和手机立即绑定

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

/ 猿问

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

函数式编程 2019-10-14 09:28:33

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

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


查看完整描述

3 回答

?
一只斗牛犬

如果我理解您的问题,则需要按升序排序。


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


查看完整回答
反对 回复 2019-10-14
?
qq_笑_17

最后ñ添加的记录,最近少到最近,可以看到与此查询:


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)


查看完整回答
反对 回复 2019-10-14
?
慕雪6442864

为了获得最后的N条记录,您可以执行以下查询:


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

如果您只想要最后一条记录:


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

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


查看完整回答
反对 回复 2019-10-14

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信