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

上一篇: mongodb: how to get the last N records?

下一篇: Find objects between two dates MongoDB