首页 专题 H5案例 前端导航 UI框架

Mongoose 大数据量分页查询优化

作者:TG 日期: 2018-07-04 字数: 2187 阅读: 7750
最近遇到Mongoose 大数据量查询性能问题,经过不懈Google,找到了几种解决方案,在这里记录以下。

说到Mongoose 分页查询,我们首先会想到limit配合skip来查询。

Article.find({})

    .skip(page * 5)   

    .limit(5)   

    .sort({'_id':-1})   

    .exec(cb);

根据传入的 page 来跳过相应的页数,在进行查询返回结果。

但当数据庞大时,这种查询方式就有性能问题了,有没有解决方案呢?

当然是有的。

1. 将上一页最后一条数据的_id传给服务器

我们可以以_id为主键,每次传递最后一条数据的ObjectId,然后根据ObjectId的比较来返回数据:

Article.find({'_id': {"$lt": id}})   

    .limit(5)   

    .sort({'_id':-1})   

    .exec(cb);

依据主键的查询,速度会比skip跳转过得多。

缺点: 当中间有删除或断点时,这种方式就难以执行了。

2. 从业务层面,只允许返回限定数量的数据

比如: 只提供100页的查询按钮(百度查询就是这样滴)。

缺点: 无法提供全部分页查询。

解决方案:提供模糊查询来让用户查询需要的数据

如有问题,欢迎在下方评论区留言!

目录