php mongodb 聚合分页,php mongodb实现分页操作

博主分享了在使用PHP进行后台管理网站开发时,如何利用MongoDB实现分页功能的经验。通过skip和limit方法完成数据分页,但指出skip在大数据量下效率较低,提出了使用where+limit优化思路并表示会继续研究。
摘要由CSDN通过智能技术生成

博主是大三的在校大学生,学习计算机的路上,有些自己的感悟,写下来互相讨论下,欢迎吐槽。

最近在用php写后台管理网站,改进功能时想到数据显示,实现的分页的功能显示,单纯用php+mongodb实现。代码如图:

require_once 'dengluclass.php';

$pagesize=8; //一页显示的数据个数

$pagecount=0; //数据一共多少页

$pagenow=1; //当前页数

$test=new dengluclass();

$pagecount=$test->getpagecount($pagesize); //通过count函数 获取数据显示多少页

if(!empty($_GET['pagenow']) ) //初次调用当前页码为1 接下来通过href标签获取下页页数

{

if($_GET['pagenow']<=$pagecount)

{

$pagenow=$_GET['pagenow'];

}

else{};

}

$cursor=$test->getlist($pagenow,$pagesize);

while($cursor->hasnext()){

$value=$cursor->getnext();

echo '

';

echo '

'.$value["kehuhao"].'';

echo '

'.$value["xingming"].'';

echo '

';

}

if($pagenow>1){

$prePage=$pagenow-1;

echo "上一页 "; //href标签上页

}

if($pagenow

$nextPage=$pagenow+1;

echo "下一页 ";

}

echo "<<";

echo ">>";

echo "当前页{$pagenow}/总共页{$pagecount}";

echo "
";

?>

?>

dengluclass.php

require_once 'dengluclass.php';

error_reporting(E_ALL & ~E_NOTICE);

class dengluclass{

public function getpagecount($pagecount){

$conn=new Mongo("mongodb://localhost:27017");

$collection=$conn->kehuguanli->dengluxinxi;

$count=ceil($collection->count()/$pagecount);

return $count;

}

public function getlist($pageNow, $pageSize)

{

$conn=new Mongo("mongodb://localhost:27017");

$collection=$conn->kehuguanli->dengluxinxi;

$res=$collection->find()->skip(($pageNow-1)*$pageSize)->limit($pageSize);

return $res;

}

}

?>

简单来说,就是通过skip+limit实现分页,但是目前skip对于市面上的数据库,都是一笔不小的开销。当数据量很大时,skip就会变得很慢,网上的有的说用where+limit

整体思想就是先排序然后在limit,博主正在研究,静等更新。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值