Также как и при работе в консоли, в php получить документ мы можем с помощью методов find и findOne. Например, получим единичный объект:
$con = new MongoClient(); $collection= $con-> test-> persons; print_r($collection->findOne()); $con->close();
Результатом опять же будет объект в виде ассоциативного массива:
Опять же мы можем обратиться к отдельным свойствам и получить их значения:
$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".