После первоначальной настройки модуля продолжится объяснение того, как начать
работу с соответствующей пользовательской библиотекой для написания первого проекта.
Установка библиотеки 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 даёт спецификация
Сохранение данных.