После первоначальной настройки модуля продолжится объяснение того, как начать
работу с соответствующей пользовательской библиотекой для написания первого проекта.
Установка библиотеки 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 также содержит
автозагрузчик классов для этих зависимостей. Необходимо убедиться,
что этот автозагрузчик включён в начало скрипта
или в код начальной загрузки приложения:
<?php
// Этот путь должен указывать на автозагрузчик Composer
require 'vendor/autoload.php';
После этого можно использовать библиотеку
как описано » в документации.
Если ранее приходилось работать с драйвером MongoDB в других языках, API библиотеки
будет выглядеть знакомым. Он содержит
класс » Client
для соединения с MongoDB,
класс » Database
для операций уровня базы данных (например, команды, управление коллекциями)
и класс
» Collection
для операций уровня коллекций (например, операций
» CRUD, управление индексами).
Например, вот как вставить документ в коллекцию
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,
модуль сгенерирует объект MongoDB\BSON\ObjectId,
чтобы сервера использовал его как _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 для удобства и реализуют
интерфейсы модуля MongoDB\BSON\Serializable
и MongoDB\BSON\Unserializable, чтобы гарантировать,
что значения сохраняют тип при сериализации обратно в BSON. Это
помогает избежать предостережения в устаревшем модуле mongo, в котором массивы
могли превращаться в документы и наоборот. Дополнительную информацию
о преобразовании значений между PHP и BSON даёт спецификация
Сохранение данных.