CNode

学着写了个mongoose分页插件

分享
Ssanrudongfeng发布于10 年前最后回复10 年前4 回复4786 浏览0 收藏

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)

S
sanrudongfeng#1·10 年前

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

F
fangker#2·10 年前

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

S
sanrudongfeng#3·10 年前
引用 fangker正好看到这篇文章,我就bb一点吧,最近做mongo分页的时候发现一个问题纪录最后一条和skip都不是好的方法。重要的是在于一个度。可以限定一个度,当小于使用skip limit分页 ,当大于X...

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

参与回复
登录后即可参与回复。登录