假设我在数据库中有 1,2,3,4,5,6,7,8,9,10 (基于timestamp
订单)。
我希望按顺序获得 6,7,8,9,10 。
MessageModel
.find()
.sort({ timestamp: -1 })
.limit(5)
.exec()
.then(messages => console.log(messages))
.catch(err => console.log(err));
上述方法会给我 10,9,8,7,6 。
我试着排序两次:
MessageModel
.find()
.sort({ timestamp: -1 })
.limit(5)
.sort({ timestamp: 1 })
.exec()
.then(messages => console.log(messages))
.catch(err => console.log(err));
但这会给我 1,2,3,4,5 。
Mongoose有没有办法按顺序获取最后5个文档?
答案 0 :(得分:1)
要达到您的要求,您可以使用汇总查询
MessageModel.aggregate([
{ $sort : { timestamp: -1} },
{ $limit : 5 },
{ $sort : { timestamp: 1} }
])
.exec();
答案 1 :(得分:1)
您可以使用Array#reverse
有效地撤消MessageModel
.find()
.sort({ timestamp: -1 })
.limit(5)
.exec()
.then(messages => {
messages.reverse();
console.log(messages);
})
.catch(err => console.log(err));
数组中元素的顺序,以便按升序排列它们:
{{1}}