用Mongo和Mongoose排序无限滚动

时间:2018-10-22 04:22:03

标签: node.js reactjs mongodb mongoose mongoose-schema

如何在调用mongo集合之前对它们进行排序?我已经尝试过索引和排序,但是结果仍然显示乱序。排序有效,但仅对找到拉出的结果进行排序,但是我需要拉出已按日期顺序排序的结果。

 events = await Event.find({
          time: {
            $gte:new Date()
        },
          $and: [
            {
              active: true
            }
          ]
        })
          .sort("-time")
          .limit(limit)
          .skip(skip);

应用限制5:

{
  "data": {
    "searchEvents": [
      {
        "date": "2018-10-22T05:00:00.000Z",
        "events": [
          {
            "eventname": "First",
            "time": "2018-10-22T05:00:00.000Z"
          },
          {
            "eventname": "Second",
            "time": "2018-10-22T05:00:00.000Z"
          }
        ]
      },
      {
        "date": "2018-10-23T05:00:00.000Z",
        "events": [
          {
            "eventname": "Third",
            "time": "2018-10-23T05:00:00.000Z"
          }
        ]
      },
      {
        "date": "2018-10-26T05:00:00.000Z",
        "events": [
          {
            "eventname": "Fourth",
            "time": "2018-10-26T05:00:00.000Z"
          }
        ]
      },
      {
        "date": "2018-10-26T06:00:00.000Z",
        "events": [
          {
            "eventname": "Fifth",
            "time": "2018-10-26T06:00:00.000Z"
          }
        ]
      }
    ]
  }
}

限制为3:仅显示第3,第4和第5

使用的索引: EventsSchema.index({time:-1});

进一步的说明 问题澄清:我正在尝试对无限滚动的结果进行排序。基本上,Mongo会提取10个文档,然后我对这些结果进行排序,然后当用户感到不满意时,他会再次跳过前10个文档。问题是,这不是有条理的。如果我想按日期对数据进行排序。目前,它会返回前10个结果,并根据“自然顺序”在找到日期后按日期排序。如何根据日期查找Mongo? *请记住index和sort()都在排序之后。

1 个答案:

答案 0 :(得分:-1)

使用猫鼬分页纸

查询所有结果... 对结果进行排序和限制。