Skip to content

Instantly share code, notes, and snippets.

@umutakturk
Created September 29, 2012 19:01
Show Gist options
  • Save umutakturk/3804918 to your computer and use it in GitHub Desktop.
Save umutakturk/3804918 to your computer and use it in GitHub Desktop.
PHP MongoDB Simple Pagination
<?php
$mongodb = new Mongo("mongodb://username:password@localhost/database_name");
$database = $mongodb->database_name;
$collection = $database->collection;
$page = isset($_GET['page']) ? (int) $_GET['page'] : 1;
$limit = 12;
$skip = ($page - 1) * $limit;
$next = ($page + 1);
$prev = ($page - 1);
$sort = array('createdAt' => -1);
$cursor = $collection->find()->skip($skip)->limit($limit)->sort($sort);
foreach ($cursor as $r) {
echo sprintf('<p>Added on %s. Last viewed on %s. Viewed %d times. </p>', $r['createdAt'], $r['lastViewed'], $r['counter']);
}
if($page > 1){
echo '<a href="?page=' . $prev . '">Previous</a>';
if($page * $limit < $total) {
echo ' <a href="?page=' . $next . '">Next</a>';
}
} else {
if($page * $limit < $total) {
echo ' <a href="?page=' . $next . '">Next</a>';
}
}
$mongodb->close();
?>
Copy link

ghost commented Jul 11, 2015

[...].ensureIndex({createdAt:1})

find($range,array('createdAt' => 1))->count();
or
find($range,array('_id' => 1))->count();

ref: http://edgystuff.tumblr.com/post/47080433433/counting-in-mongodb-just-got-much-faster
http://stackoverflow.com/questions/7658228/mongodb-count-is-very-slow-how-do-we-refine-work-around-with-it

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment