带有findOne mongoose的分页后端

xuo3flqw  于 2022-11-24  发布在  Go
关注(0)|答案(1)|浏览(143)

我尝试构造一个findOne请求,只检索特定用户帐户上最近的10个通知,然后如果用户选择第2页,我希望检索第11 - 20个最近的通知,依此类推。
我面临的问题是,使用Notification.findOne和limit时,我无法访问通知的总长度,因此,由于数据的顺序与我希望的顺序相反(最早的是索引0),很难构建请求以获取最后10个通知,同时不知道有多少个通知在那里。
是否有不同的方法可以采用,理想情况下,我将能够从mongo数据库返回通知。长度,并根据我通过的数量,第一个10个通知,第二个10个通知,第三个10个通知等...
第一个
已尝试:反转嵌套通知数组并返回通知总长度(切片前),但未成功

xe55xuns

xe55xuns1#

对于slice内的结束参数,将是偏移值,即pagelimit;对于开始参数,您必须发送限制值,如(pagelimit)-limit
https://mongoplayground.net/p/ErwH79Q4ppK

const start = (page*limit)-limit
const end = page*limit;

db.collection.find({
  userId: 1
},
{
  notifications: {
    "$sortArray": {
      "input": {
        $slice: [
          "$notifications",
          start,
          end
        ]
      },
      "sortBy": -1
    }
  }
})

相关问题