Ben bu hakkı yapıyorum? MySQL w / bazı eski PHP kodu bakmak için gittim ve bir çok "temiz" ve bu yerine getirmeye "hızlı" bir yolu var, ancak ben merak ediyorum, bu işe almak için idare ettik.
Önce "belge" nin toplam sayısını almak gerekir
$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);
Ben pagination ile görüntüleyebilirsiniz böylece / / Sorgu dizi doldurmak için
$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));
Benim sorum ben bir çekimde sorgu çalıştırabilirsiniz, nedir? Ben temelde ikinci kez dışında ben kayıtları arasındaki atlamak için değerini geçen kulüpler, iki kez aynı sorguyu çalıştırıyorum.
- Yeni kod ...
Birisi bunu yapmak için başka bir yol (eğer mümkünse) bilir sürece Tamam, ben bu yapılabilir değil söylemek için gidiyorum. Bunu dedi, ben daha iyi görünümlü kodu verdi ben MongoDB ile benim sorguları çalıştırmak şekilde değişti. ;-) Ben DB gezileri aza indirmek için çalışıyor, ama oh iyi umarım bu bir performans isabet almaz. Benim diğer girişimi dizideki elemanların sayısını oldu, ama çabuk $ sınırının beri çalışmak ve olmaz öğrendim $ Parametreler dokümanlar ITS toplam sayı verecek atlayın.
$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);