php mongo分页查询,如何使用mongodb和php正确处理分页查询?

我这样做是对吗?我去看看一些旧的PHP代码与MySQL,我已经设法让它工作,但我想知道是否有一个“更干净”和“更快”的方式来实现这一点。

首先我需要得到“文件”的总数

$total_documents = $collection->find(array("tags" => $tag,

"seeking" => $this->session->userdata('gender'),

"gender" => $this->session->userdata('seeking')))->count();

$skip = (int)($docs_per_page * ($page - 1));

$limit = $docs_per_page;

$total_pages = ceil($total_documents / $limit);

//查询以填充数组,以便我可以用分页显示

$data['result'] = $collection->find(array("tags" => $tag,

"seeking" => $this->session->userdata('gender'),

"gender" => $this->session->userdata('seeking')))->limit($limit)->skip($skip)->sort(array("_id" => -1));

我的问题是,我可以一次运行查询吗?我基本上运行相同的查询两次,除了第二次传递值以在记录之间跳过。

– 新代码…

好的,除非有人知道另一种方式来做(如果可能的话),我会说这是不可行的。就这样说,我改变了我通过mongodb运行我的查询的方式,这产生了更好的代码。 ;-)我试图尽量减少到DB的旅行,但是希望这不会影响到性能。我的另一个尝试是计算数组中的元素数,但很快发现,自$ limit& $ skip参数将给出ITS总共的文档数。

$skip = (int)($docs_per_page * ($page - 1));

$limit = $docs_per_page;

$query = array("loc" => array('$near' => array('lat' => $latitude, 'lon' => $longitute) ),

"tags" => $tag, "seeking" => $this->session->userdata('gender'),

"gender" => $this->session->userdata('seeking'));

$fields = array("username", "zipcode", "tags", "birth_date");

$total_documents = $collection->find($query, array("_id"))->count();

$data['result'] = $collection->find($query, $fields)->limit($limit)->skip($skip);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值