我找不到任何地方有这样的记录。默认情况下,find()操作将从头获取记录。我怎么能得到mongodb的最后N条记录?
编辑:我也想返回的结果从最近到最近的顺序,而不是相反。
我找不到任何地方有这样的记录。默认情况下,find()操作将从头获取记录。我怎么能得到mongodb的最后N条记录?
编辑:我也想返回的结果从最近到最近的顺序,而不是相反。
当前回答
使用$slice操作符限制数组元素
GeoLocation.find({},{name: 1, geolocation:{$slice: -5}})
.then((result) => {
res.json(result);
})
.catch((err) => {
res.status(500).json({ success: false, msg: `Something went wrong. ${err}` });
});
其中geolocation是数据数组,从中我们得到最近5条记录。
其他回答
使用$slice操作符限制数组元素
GeoLocation.find({},{name: 1, geolocation:{$slice: -5}})
.then((result) => {
res.json(result);
})
.catch((err) => {
res.status(500).json({ success: false, msg: `Something went wrong. ${err}` });
});
其中geolocation是数据数组,从中我们得到最近5条记录。
你可以试试这个方法:
获取集合中记录的总数
db.dbcollection.count()
然后使用skip:
db.dbcollection.find().skip(db.dbcollection.count() - 1).pretty()
最后添加的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)
db.collection.find().sort({$natural: -1 }).limit(5)
你可以使用sort(), limit(),skip()从任何跳过的值开始获得最后N个记录
db.collections.find().sort(key:value).limit(int value).skip(some int value);