После первоначальной настройки драйвера, мы продолжим объяснять, как начать
работу с драйвером MongoDB и соответствующей пользовательской библиотекой,
для создания нашего первого проекта.
Установка библиотеки PHP с помощью Composer
Последнее, что нам необходимо установить перед тем, как начать писать
наше приложение - установить библиотеку PHP.
Библиотеку будем устанавливать с помощью пакетного менеджера
» Composer.
Инструкции по установке Composer ищите на его сайте.
Устанавливаем библиотеку следующим образом:
$ composer require mongodb/mongodb
Будет выведено что-то вроде:
./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
- Installing mongodb/mongodb (1.0.0)
Downloading: 100%
Writing lock file
Generating autoload files
Composer создаст несколько файлов: composer.json
,
composer.lock
и директорию vendor
,
содержащую саму библиотеку и прочие зависимости, которые потребуются
в вашем проекте.
Использование библиотеки PHP
Кроме управления зависимостями, Composer также предоставляет
автоподгрузчик классов для этих зависимостей. Убедитесь, что вы
включили этот автозагрузчик в начало своего скрипта или в
код bootstrap() вашего приложения:
<?php
// Этот путь должен указывать на автозагрузчик Composer
require 'vendor/autoload.php';
После этого можно использовать любой функционал, описанный в
» документации по библиотеке.
Если вы ранее использовали более старый драйвер (т.е. расширение
mongo
), то API библиотеки должно быть вам знакомо. Оно содержит
класс » Client
для соединения с MongoDB, класс
» Database
для операций уровня базы данных (т.е. команды, управление коллекциями) и класс
» Collection
для операций уровня коллекции (т.е. методы
» CRUD, управление индексами).
Различные методы Collection были переименованы для большей понятности и соответствия
языково-независимой » спецификации.
Пример, как вставить документ в коллекцию
beers базы данных demo:
<?php
require 'vendor/autoload.php'; // подключаем автоподгрузчик классов Composer
$client = new MongoDB\Client("mongodb://localhost:27017");
$collection = $client->demo->beers;
$result = $collection->insertOne( [ 'name' => 'Hinterland', 'brewery' => 'BrewDog' ] );
echo "Идентификатор вставленного документа '{$result->getInsertedId()}'";
?>
Вместо инъекции сгенерированного поля _id
во входящий документ
(как это делалось в старых версиях драйвера), теперь можно это делать с помощью
метода insertOne
возвращённого объекта.
После вставки вы, конечно же, можете запросить только что вставленные данные.
Для этого используйте метод find
, который возвращает итерируемый
курсор:
<?php
require 'vendor/autoload.php'; // подключаем автоподгрузчик классов Composer
$client = new MongoDB\Client("mongodb://localhost:27017");
$collection = $client->demo->beers;
$result = $collection->find( [ 'name' => 'Hinterland', 'brewery' => 'BrewDog' ] );
foreach ($result as $entry) {
echo $entry['_id'], ': ', $entry['name'], "\n";
}
?>
Хоть из примера это и не очевидно, но документы BSON и массивы по умолчанию
десериализованы как типы классов в библиотеке. Эти классы гарантируют, что
значения сохранят свои типы когда будут сериализовываться обратно в BSON, что
позволяет избежать проблемы старых драйверов, когда массивы могли преобразоваться
в документы и наоборот. Кроме того, классы наследуют
ArrayObject для большего удобства использования.
Более подробно о сериализации и десериализации между переменными PHP и
BSON можно прочитать в спецификации Постоянные данные.