Управление выборкой

Последнее обновление: 30.10.2015

Класс 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

Оператор $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);

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850