如何按顺序获取最后5个文档?

时间:2016-08-21 22:44:05

标签: mongodb mongoose mongodb-query

假设我在数据库中有 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个文档?

2 个答案:

答案 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}}