mongoose查询,select10最近的文件,而不改变顺序

我需要从我的messages collectionselect最近的10条消息,并将它们从旧到新的数组返回。

例如m1, m2, m3, ... [m19, m20, m22] < – select最后10个,但保持顺序。

slice运算符是很好的,因为它可以像-10这样的值,所以从数组中select10个最后的值。 问题是我想sorting整个查询响应,而不是响应中的属性( slice运算符需要2个参数,第一个是path )。

其实我做的是:

 .find({ conversation: conversationId }) .sort('-updatedAt') .limit(10) .exec(function(err, messages) { }); 

但是它返回的数组包含从最近到最老的消息。 我可以做什么来保持良好的秩序,而不会在查询执行后恢复整个数组? ( messages.reverse();

您可以更改顺序以升序(旧到新)消息,并获取您需要的最后N个元素

 .find().skip(db.collection.count() - N) 

所以你会得到最新的消息在升序orden