Mongoose查询,选择10个最新文档而不更改顺序
我需要从我的messages collection
中选择10条最新的消息,然后将它们作为一个数组从旧版本返回到最近的版本。
示例:m1, m2, m3, ... [m19, m20, m22]
slice
运算符非常棒,因为它可以像-10
一样获取值,因此从数组中选择10个最后的值。问题是我想要对整个查询响应进行排序,而不是响应中的属性(slice
运算符需要2个参数,第一个是path
)。
其实我做的是:
.find({ conversation: conversationId })
.sort('-updatedAt')
.limit(10)
.exec(function(err, messages) {
});
但它返回的数组包含从最新到最旧的消息。如果不在查询执行后恢复整个数组,我该怎么做才能保持良好的顺序? (messages.reverse();
)
您可以将订单更改为升序(旧到新)消息,并获取所需的最后N个元素
.find().skip(db.collection.count() - N)
因此,您将获得升序orden中的最新消息
Mongoose查询,选择10个最新文档而不更改顺序
我需要从我的messages collection
中选择10条最新的消息,然后将它们作为一个数组从旧版本返回到最近的版本。
示例:m1, m2, m3, ... [m19, m20, m22]
slice
运算符非常棒,因为它可以像-10
一样获取值,因此从数组中选择10个最后的值。问题是我想要对整个查询响应进行排序,而不是响应中的属性(slice
运算符需要2个参数,第一个是path
)。
其实我做的是:
.find({ conversation: conversationId })
.sort('-updatedAt')
.limit(10)
.exec(function(err, messages) {
});
但它返回的数组包含从最新到最旧的消息。如果不在查询执行后恢复整个数组,我该怎么做才能保持良好的顺序? (messages.reverse();
)
您可以将订单更改为升序(旧到新)消息,并获取所需的最后N个元素
.find().skip(db.collection.count() - N)
因此,您将获得升序orden中的最新消息