【问题标题】:Sorting Infinite Scroll with Mongo and Mongoose使用 Mongodb 和 Mongoose 对无限滚动进行排序
【发布时间】:2018-10-22 04:22:02
【问题描述】:

如何在调用 find 之前对 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() 都在之后排序。

【问题讨论】:

  • 您的文档是什么样的?从这个查询中返回它们的顺序是什么?
  • @JohnnyHK 我已经编辑了我的问题
  • 索引是正确的方法。你能用你试过的索引更新问题吗?
  • @JohnnyHK 完成。我已经尝试过 -1 和 1。结果相同。还要在这里澄清 date.events 结构。我取回事件列表并将它们放入分组的日期中。所以忽略日期作为修复。
  • 你的架构是什么样的?

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


【解决方案1】:

使用猫鼬分页

或

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

【讨论】:

    猜你喜欢
    • 2018-10-27
    • 1970-01-01
    • 2015-03-07
    • 1970-01-01
    • 2019-01-31
    • 1970-01-01
    • 1970-01-01
    • 2020-10-30
    • 2021-11-01
    相关资源
    最近更新 更多