Класс MongoCursor имеет ряд методов, которые позволяют управлять результатами выборки и настраивать выборку.
Метод count
класса MongoCursor позволяет подсчитать общее количество документов в выборке:
$con = new MongoClient(); $collection= $con-> test-> persons; $list = $collection->find(); echo $list -> count(); $con->close();
Метод limit
позволяет ограничить выборку определенным количеством документов. Например, ограничим вывод двумя документами:
$con = new MongoClient(); $collection= $con-> test-> persons; $list = $collection->find(); $list -> limit(2); while($document = $list->getNext()) { echo "<p> Name:" . $document["name"] . "</br>"; echo "Age:" . $document["age"] . "</p>"; } $con->close();
Метод skip
позволяет пропустить определенное количество документов:
$con = new MongoClient(); $collection= $con-> test-> persons; $list = $collection->find(); // пропуск двух документов $list -> skip(2); while($document = $list->getNext()) { echo "<p> Name:" . $document["name"] . "</br>"; echo "Age:" . $document["age"] . "</p>"; } $con->close();
Оператор $slice сочетает возможности limit и skip, но при этом его основная деятельность и преимущество - ограничение вывода элементов массива, который может быть установлен в качестве значения ключа. Например, в каждом документе может быть массив accounts для хранения номеров банковских счетов. Их может быть несколько, но нам для задачи может потребоваться выбрать только один. И в этом нам может помочь $slice.
Оператор $slice принимает два параметра. Первый параметр указывает на общее количество возвращаемых документов. Второй параметр необязательный, но если он используется, тогда первый параметр указывает на смещение относительно начала (как функция skip), а второй - на ограничение количества извлекаемых документов.
$con = new MongoClient(); $collection= $con-> test-> persons; $cond=array('languages' => array("$slice" => 1)); $list = $collection->find(array("name" => "Mark"), $cond);
Передавая в параметр $slice
число 1, мы говорим системе, взять один элемент массива languages с начала массива. Мы также
могли бы взять первый с конца, передав отрицательное число: -1. И также мы можем ограничить выборку, передав второй параметр:
$con = new MongoClient(); $collection= $con-> test-> persons; $cond=array('languages' => array("$slice" => array(2, 1))); $list = $collection->find(array("name" => "Mark"), $cond);
Также как и в консоли, в PHP, применяя метод sort
класса MongoCursor можно настроить сортировку:
$con = new MongoClient(); $collection= $con-> test-> persons; $list = $collection->find(); $param=array("age"=>1); // сортировка по возрасту $list -> sort($param); while($document = $list->getNext()) { echo "<p> Name:" . $document["name"] . "</br>"; echo "Age:" . $document["age"] . "</p>"; } $con->close();
Метод sort в качестве параметра принимает поле, по которому надо упорядочить выборку. Если мы хотим, чтобы в выборки все записи упорядочивались по возрастанию относительно поля age, то мы указываем единицу: $param=array("age"=>1);
.
Если мы хотим, чтобы выборка упорядочивалась по убыванию, то указываем -1: array("age"=> -1);