学着写了个mongoose分页插件
发布于 7 年前 作者 sanrudongfeng 3902 次浏览 来自 分享

https://github.com/sanrudongfeng/mongoose-page-query mongo数据库user集合,user对应的model为User(mongoose有schema,model,entity),假定有五条数据: [ {name: ‘a1’ , age: 3} , {name: ‘a2’ , age: 5} , {name: ‘a3’ , age: 1} , {name: ‘a4’ , age: 2} , {name: ‘a5’ , age: 4} ] 使用方式:

  1. npm install mongoose-page-query;
  2. mongoose.plugin(require(’ mongoose-page-query’));
  3. User.pageQuery({page:1,row:3},{},{},{sort:-1});//后三个参数对应mongodb中查询的query,projection,option
  4. user.pageQuery为async函数:
       async function test(){
  	     let userList =await User.pageQuery({page:1,row:3},{},{},{sort:{age:-1});
  	}

userList的返回结果为: {page,row,rows:[],total}四个参数,四个参数的意思都很明显,返回结果为: { total:5, page:1 , row:3, rows:[ {name: ‘a2’ , age: 5}, {name: ‘a5’ , age: 4}, {name: ‘a1’ , age: 3} ]} 第一次写,,,希望大家多多批评指正,有很多不足的地方,原来写个简单的东西都不容易。。。

4 回复

正好看到这篇文章,我就bb一点吧,最近做mongo分页的时候发现一个问题纪录最后一条和skip都不是好的方法。重要的是在于一个度。可以限定一个度,当小于使用skip limit分页 ,当大于X(10000)页时连续如X+1页采用两方法混合的方式提高查询效率。楼主可以试着意淫下

@fangker 很有道理啊。这个不同的集合大小不一样,感觉需要针对每个集合大致确定出这个度来。集合可能需要不同的排序方式,不同的排序方式效率也是不一样的。综合集合和排序方式,提前确定这个大致的范围,然后就可以混合使用了。这个也可以写个程序来测测。

@nswbmw 可以啊,得先用用Mongolass啊,不知道有没有提供钩子静态方法之类

回到顶部