版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、使用Skip和limit可以如下做数据分页:Code:page1 = db.things.find().limit(20)page2 = db.things.find().skip(20).limit(20)page3 = db.things.find().skip(40).limit(20)当数据量很小时,这样做分页完全没有问题。但是当数据量很大时,skip操作会变的很慢,应该避免使用。(不止是mongoDb会这样,大部分数据库都是。)可以通过改变查询文档的规则来达到分页效果,避免使用skip来跳过大量的数据。(通过计算,得到下次查询应该从什么地方开始)<?php/mongoDB分页类
2、class Page var $count=''var $size=''var $total=''var $last=''var $link=''var $url=''var $db=''var $orderby=''var $table=''var $set=''var $page=''var $turnto=''var $key = ''public function _constru
3、ct($table = '', $orderby = array(), $count = '', $size = '', $last = '', $theurl = '', $set = '', $next = '', $prev = '')global $DB;$url = SITE_ROOT.strtolower(CLASS_NAME).'/'.METHOD_NAME;$set = $set ? $set : 5;$this->table =
4、 $table;$this->count = $count;$this->size = $size;$this->last = $last;$this->url = $this->url ? $this->url : $url;$this->set = $set;$this->next = $next;$this->prev = $prev;$this->db = $DB;$this->orderby = $orderby;$this->page = GET:UINT('page');$this->p
5、age = $this->page ? $this->page : 1;/$this->page = $this->page > 0 ? $this->page : GET:UINT('search')>0? GET:UINT('search'):1*/; /$this->page= GET:UINT('search');$this->total = ceil($this->count / $this->size);public function show()if($this-&g
6、t;total != 1)$this->get_first();$this->get_prev();$this->get_center();$this->get_next();$this->get_last();$this->get_turnto();if($this->link)$this->link = $this->turnto.$this->link.'共'.$this->total.'页 '.$this->count.'条记录'if($this->turnto
7、)$this->link .= '</form>'return $this->link;/获取首页private function get_first()if($this->page != 1)if($this->total > 0)$this->link.='<a href="'.$this->url.'" title="首页">首页</a>'/获取上一页private function get_prev()if($this-&
8、gt;prev)$this->link.='<a href="'.$this->url.'/page/'.($this->page - 1).'/id/'.$this->prev.'" title="上一页">上一页</a>'/中间显示private function get_center()$left = ($this->set - $this->page >= 0) ? ($this->page - 1) : $th
9、is->set;$right = ($this->total - $this->page > $this->set) ? $this->set : ($this->total - $this->page);if(!$this->last)$rightresult = $this->db->limit($right * $this->size + 1)->order_by($this->orderby)->get($this->table);else$rightresult = $this->d
10、b->limit($right * $this->size + 1)->where_lte($this->key,$this->last)->order_by($this->orderby)->get($this->table);if($this->last)$this->nor_orderby();$leftresult = $this->db->limit($left * $this->size)->where_gt($this->key,$this->last)->order_by
11、($this->orderby)->get($this->table);$start = ($this->page - $this->set) <= 0 ? 1 : ($this->page - $this->set); $end = ($this->page + $this->set + 1 >= $this->total) ? $this->total + 1 : ($this->page + $this->set + 1);$ii = $left;$iii = 0;/显示左边的for($i = $s
12、tart; $i < $end; $i+, $ii-, $iii+)if($this->page = $i)$this->link.='<a style="color:#06F">'.$i.'</a>'else$the_id = $ii * $this->size - 1;if($the_id > 0)$this->link.='<a href="'.$this->url.'/page/'.$i.'/id/'.$l
13、eftresult$the_id$this->key.'" title="第'.$i.'页">'.$i.'</a>'else$the_id = ($iii - $left) * $this->size;$this->link.='<a href="'.$this->url.'/page/'.$i.'/id/'.$rightresult$the_id$this->key.'" title=&
14、quot;第'.$i.'页">'.$i.'</a>'/获取下一页private function get_next()if($this->next)$this->link.='<a href="'.$this->url.'/page/'.($this->page + 1).'/id/'.$this->next.'" title="下一页">下一页</a>'/获取尾页pri
15、vate function get_last()if($this->page != $this->total)$res = $this->count % $this->size;$this->nor_orderby();if($res > 0)$result = $this->db->limit($res)->order_by($this->orderby)->get($this->table);$this->last = $result$res-1$this->key;$this->link.='
16、;<a href="'.$this->url.'/page/'.$this->total.'/id/'.$this->last.'" title="尾页">尾页</a>'else$result = $this->db->limit($this->size)->order_by($this->orderby)->get($this->table);$this->last = $result$this->si
17、ze-1$this->key;$this->link.='<a href="'.$this->url.'/page/'.$this->total.'/id/'.$this->last.'" title="尾页">尾页</a>'/跳转到private function get_turnto()$this->turnto = '<form action="" method="get" onsubmit="window.location=''.$this->url.'/search/'+this.p.value+''.''return false;">转到第 <input type="text" name="p&
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中心对称(第2课时)教学设计
- 黑龙江省齐齐哈尔市泰来县2025-2026学年四下数学期中教学质量检测模拟试题(含答案)
- 2025广东佛山三水珠江村镇银行校园招聘(应届生)笔试历年典型考题及考点剖析附带答案详解
- 2025年福建浦开集团有限公司暨福建浦盛产业发展集团有限公司招聘23人笔试历年常考点试题专练附带答案详解
- 2025年湖南常德汉寿农商行招聘12人笔试历年典型考题及考点剖析附带答案详解
- 2025年河南空港数字城市开发建设有限公司招聘20人笔试历年备考题库附带答案详解
- 2025年江西赣能股份有限公司所属企业第三批次社会招聘2人笔试历年难易错考点试卷带答案解析
- 2025年春季浙江嘉兴桐乡民泰村镇银行招聘18人笔试历年典型考题及考点剖析附带答案详解
- 黑龙江省鸡西市梨树区2025届数学三年级下学期期末检测模拟试题(含解析)
- 陕职单招面试题及答案
- 成都市金牛区卫生健康局所属事业单位2026年招募医务社会工作服务岗位(5人)笔试备考题库及答案详解
- 2026济南产发集成电路有限公司招聘18人笔试参考题库及答案详解
- 安徽省芜湖市2025-2026学年高一下学期期末考试语文试卷
- 东北证券战略发展规划-第三次指导委员会汇报-20241028-vf
- 2026河南郑州临港产教融合科技有限公司第一批招聘34人考试参考题库及答案详解
- 音箱调音师资格证考试题库及答案
- 【世界经济论坛】塑造学习的未来:人工智能时代的教育准备
- 监理专项检查工作制度
- 保密工作制度汇编
- 光伏安全生产例会制度
- 2025手术体位相关性周围神经损伤预防专家共识解读课件
评论
0/150
提交评论