最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

Mongoose查询,选择10个最新文档而不更改顺序

IT培训 admin 6浏览 0评论

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中的最新消息

发布评论

评论列表 (0)

  1. 暂无评论