क्या मैं यह सही कर रहा हूं? मैं कुछ पुराने PHP कोड w/MySQL को देखने के लिए गया था और मैंने इसे काम करने में कामयाब रहा है, हालांकि मैं सोच रहा हूं कि इसे पूरा करने के लिए "क्लीनर" और "तेज़" तरीका है या नहीं।मैगोडब और PHP के साथ पेजिनेशन क्वेरी को सही तरीके से कैसे संभालें?
सबसे पहले मैं "दस्तावेज़"
$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));
मेरा प्रश्न है, मैं चला सकते हैं की कुल संख्या प्राप्त करने की आवश्यकता होगी एक शॉट में सवाल? मैं मूल रूप से दो बार एक ही क्वेरी चला रहा हूं, दूसरी बार जब मैं रिकॉर्ड के बीच छोड़ने के लिए मूल्य पास कर रहा हूं।
- नई कोड ...
ठीक है, जब तक कि कोई एक और तरीका यह करने के लिए (यदि यह संभव है) के जानता है, मैं यह संभव नहीं है कहने के लिए जा रहा हूँ। इसके साथ ही, मैंने जिस तरह से मैंगोडब के माध्यम से अपने प्रश्नों को चलाया, वैसे ही बदल दिया, जिसने बेहतर दिखने वाला कोड दिया। ;-) मैं डीबी के लिए यात्रा को कम करने की कोशिश कर रहा था, लेकिन ओह उम्मीद है कि यह प्रदर्शन हिट नहीं लेता है। मेरा दूसरा प्रयास सरणी में तत्वों की संख्या को गिनना था, लेकिन जल्दी से पता चला कि $$ स्किप पैरामीटर के बाद से काम नहीं करेगा, यह कुल संख्या में दस्तावेज़ों को देगा।
$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);
सीमा से पहले आने को छोड़ नहीं करना चाहिए? – Chamila