Выборка документов

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

Также как и при работе в консоли, в php получить документ мы можем с помощью методов find и findOne. Например, получим единичный объект:

$con = new MongoClient();
$collection= $con-> test-> persons;
print_r($collection->findOne());
 $con->close();

Результатом опять же будет объект в виде ассоциативного массива:

Получение документа из MongoDB в PHP

Опять же мы можем обратиться к отдельным свойствам и получить их значения:

$con = new MongoClient();
$collection= $con-> test-> persons;
$person = $collection->findOne();
echo $person["name"];
 $con->close();

База данных вернула нам первый попавшийся документ. Но, как и при работе в консоли, мы можем настроить фильтрацию:

$con = new MongoClient();
$collection= $con-> test-> persons;

// фильтрация по возрасту
$filter=array("age"=>23);
$person = $collection->findOne($filter);
echo $person["name"];

echo "</br>";

// фильтрация по компании
$filter=array("company"=>array("name" => "Microsoft", "year" => 1974));
$person = $collection->findOne($filter);
echo $person["name"];

 $con->close();

Также мы можем искать по значению поля во вложенном объекте:

$con = new MongoClient();
$collection= $con-> test-> persons;

// фильтрация по названию компании
$filter=array("company.name"=> "Microsoft");
$person = $collection->findOne($filter);
echo $person["name"];

 $con->close();

По тому же принципу работает метод find, который выбирает набор документов из бд. Он возвращает объект класса MongoCursor, который позволяет в цикле перебрать все документы выборки:

$con = new MongoClient();
$collection= $con-> test-> persons;

$list = $collection->find();
while($document = $list->getNext())
{
	echo "<p> Name:" . $document["name"] . "</br>";
	echo "Age:" . $document["age"] . "</p>";
}

 $con->close();

Метод getNext возвращает следующий документ в выборке $list.

И также мы можем указать условия фильтрации для выборки:

$con = new MongoClient();
$collection= $con-> test-> persons;

// фильтрация по возрасту
$filter=array("age"=>23);
$list = $collection->find($filter);
while($document = $list->getNext())
{
	echo "<p> Name:" . $document["name"] . "</br>";
	echo "Age:" . $document["age"] . "</p>";
}

 $con->close();

Использование регулярных выражений

При настройке фильтров выборки мы можем использовать регулярные выражения, которые обогащают возможности поиска. Регулярные выражения применяются через специальный класс MongoRegex:

$con = new MongoClient();
$collection= $con-> test-> persons;

$regex=new MongoRegex("/Ma/i");
$list = $collection->find(array("name"=> $regex));

while($document = $list->getNext())
{
	echo "<p> Name:" . $document["name"] . "</p>";
}
 $con->close();

В качестве параметра в конструктор класса MongoRegex передается регулярное выражение. В данном случае идет поиск всех документов, значение поля name в которых начинается с "Ma".

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