猫鼬分页太慢,无法查询数百条记录

时间:2019-08-14 11:49:18

标签: node.js mongodb mongoose

我实现了猫鼬分页,以加快查询速度,在UI(Angular)上,我有分页,该分页从该路由中获取数据。但是更改页面时仍然很慢

第1页的加载速度很快,但是当我更改页面时,要花费很多时间。假设从第1页到第5页加载数据需要1.25分钟。

这是我的代码

router.get("/report",cache(30), (req, res) => {
  var page = parseInt(req.query.page) || 1;
  const pageSize = 5;
  Reports.find({}).then(requests => {
    const pager = paginate(requests.length, page, pageSize);
    const pageOfitems = requests.slice(pager.startIndex, pager.endIndex + 1);
    return res.status(200).json({
      pager,
      pageOfitems
    })
  })
});

您可以看到我也实现了Cache,但这并没有提高性能

1 个答案:

答案 0 :(得分:0)

您可以使用聚合查询来代替查找查询,而可以限制所需的记录并跳过要跳过的记录。例如,对于第一个请求,您只想加载10条记录。在这种情况下,您将跳过0条记录并限制为10。在下一个分页请求中,您将跳过10条记录并再次限制为10。 这是一个这样的示例https://mongoplayground.net/p/fCtlTBazdY6

Reports.aggregate()
.skip(page)
.limit(pageSize)
.exec().then(....

希望它能对您有所帮助。