Вы можете выполнять практически любые действия через Mongo shell. Поскольку это руководство для начинающих, не будем углубляться в эту тему. Но будьте уверены, есть множество документации по этой теме для дальнейшего изучения.
Давайте используем этот небольшой сегмент, чтобы создать коллекцию ТВ-шоу, к которой мы позже сможем обращаться с помощью PHP. Если вы выполните команду выше, вы заметите, что по умолчанию установлены только две базы данных.
```
> show dbs
```
Мы можем использовать тестовую базу данных и внутри создать новую коллекцию под названием "shows", которая будет хранить наши документы о ТВ-шоу. Сначала я определю пару переменных в окне shell.
Используем три разных ТВ-шоу вместе с датой их первого выхода в эфир и телевизионной сетью, на которой они транслировались.
Нам нужно использовать команду MongoDB .save() для сохранения новых данных и создания новых коллекций.
```
> a = { title:"Arrested Development", airdate:"November 2, 2003", network:"FOX" }
> b = { title:"Stella", airdate:"June 28, 2005", network:"Comedy Central" }
> c = { title:"Modern Family", airdate:"September 23, 2009", network:"ABC" }
```
Если вы введете каждую из этих строк в терминал Mongo shell, вы получите ответ с форматированными данными в JSON. Мы только что настроили 3 переменные, которые теперь можно передать в команду save для сохранения каждого ТВ-шоу в виде объектного документа в нашей коллекции shows.
Если вы заметили, мы еще не создали коллекцию с названием shows. Это делается "на лету" MongoDB только после того, как вы добавите некоторые данные в коллекцию. Мы обращаемся и создаем коллекции, используя стандартный синтаксис JavaScript с точками.
Скопируйте и выполните следующие команды:
```
> db.shows.save(a)
> db.shows.save(b)
> db.shows.save(c)
```
Это добавит каждую переменную JSON, которую мы создали, в коллекцию shows. После выполнения первой команды для ТВ-шоу А у нас появится новая коллекция, отображающаяся внутри нашей тестовой БД. Вы можете проверить это, выполнив команду show collections в терминале.
Но еще интереснее, мы можем проверить, сохранены ли все данные правильно, выполнив команду запроса find(), как показано ниже:
```
> db.shows.find()
```
рассмотрим, как настроить MongoDB для PHP.
Настройка MongoDB для PHP
Сервер MongoDB уже готов к работе с вашим текущим веб-сервером. Проблема в том, что вам нужно установить драйверы для предпочитаемого языка бэкэнда – PHP, Ruby, Node.js, Perl или любого другого. Не будем вдаваться в процесс установки WAMP/MAMP, так как это немного отклоняется от темы Mongo.
Но уже существуют очень простые в использовании руководства по установке WAMP и установке MAMP на любую операционную систему.
Примечание: Вы все еще можете работать с сервером MongoDB без веб-сервера. Но большинство приложений требуют этого, и поэтому я сосредоточен в основном на MongoDB для веб-разработки.
Вы можете получить некоторые данные от процесса MongoDB, посетив локальный адрес с использованием определенного порта вашей установки.
MongoDB по умолчанию использует порт 27017. Это порт драйвера, и для просмотра аналитики/диагностики мы хотим использовать 28017. Таким образом, вы можете получить доступ к информации сервера MongoDB в вашем браузере, посетив:
[http://localhost:28017](http://localhost:28017)
Этот адрес должен работать корректно независимо от того, включен ли ваш локальный веб-сервер или нет.
После установки и запуска WAMP или MAMP вы можете посетить локальный веб-сервер на порту :80, чтобы увидеть шаблон страницы по умолчанию.
Проведём вас через установку драйвера PHP, и мы закончим разработку с использованием библиотеки классов MongoDB для PHP.
Установка драйверов PHP для MongoDB
Пользователи Mac и Linux должны иметь возможность установить эти драйверы прямо из командной строки. Обратимся к документации по языку PHP для MongoDB: для установки используем pecl из библиотеки Pear PHP.
Вот строка кода, которую вам нужно запустить в терминале:
```
sudo apt-get install php5-dev php5-cli php-pear
sudo pecl install mongo
```
Если у вас уже установлен Pear, то вам не нужно запускать первую строку. Она необходима только для установок PHP, которые не обновлены до последней версии библиотеки Pear. Но после выполнения команд найдите ваш файл php.ini и добавьте следующий фрагмент кода:
```
extension=mongo.so
```
Вы должны заметить похожий блок кода где-то в середине файла, в котором есть множество других строк с расширениями в формате extension=name. Большинство расширений закомментированы, но строки без символа хэша (#) – это активные расширения.
После добавления этой строки сохраните и закройте файл, затем перезапустите ваш веб-сервер Apache, чтобы новые изменения вступили в силу.
Расширение Mongo PHP на Windows
Все пользователи Windows также должны отредактировать свой файл php.ini. Это можно сделать непосредственно из контекстного меню WAMP, нажав на иконку, а затем перейдя в PHP -> php.ini. Вам нужно будет добавить ту же строку кода, только имя файла должно быть php_mongo.dll.
Также вместо установки через командную строку, гораздо проще скачать копию расширения и перенести его вручную.
Пользователи Windows должны перейти в этот каталог Github, полный драйверов MongoDB PHP. Найдите последнюю версию, которая поддерживает вашу версию PHP (5.2, 5.3, 5.4) и скачайте .zip файл. После распаковки папки найдите расширение, которое соответствует вашей версии PHP. В моем случае я использую php_mongo-1.2.12-5.3-vc9.dll и переименовываю его в php_mongo.dll.
Теперь поместите этот файл непосредственно в каталог расширений PHP, расположенный в C:\wamp\bin\php\php5.x\ext\. Если вы переместили этот файл и добавили строку расширения в файл php.ini, то все должно быть готово! Перезапустите ваш веб-сервер и откройте страницу phpinfo() для просмотра результатов.
Вы можете сделать поиск CTRL + F по слову "mongo" и должны найти детали о самом модуле.
Веб-разработка с Mongo и PHP
Когда дело доходит до веб-разработки и баз данных, есть много о чем поговорить. Это только вводное руководство, поэтому мы не сможем затронуть многие темы, включая пользователей, аутентификацию, обновление объектов, множественные базы данных и т.д. Но давайте закончим, рассмотрев класс PHP MongoDB и то, как мы можем быстро подключиться к базе данных.
Мы будем использовать нашу тестовую БД в этом примере, обращаясь к нашей ранее созданной коллекции "shows". Мы можем извлечь все эти данные с помощью PHP и отобразить их на веб-странице. Создадим новый PHP файл в корневом каталоге локального сервера под названием shows.php со следующим кодом:
```php
<?php
// Настройки
$dbhost = 'localhost';
$dbname = 'test';
// Подключение к тестовой базе данных
$m = new Mongo("mongodb://$dbhost");
$db = $m->$dbname;
// Выбор коллекции
$collection = $db->shows;
// Выполнение запроса cursor
$cursor = $collection->find();
?>
```
Выбираем нашу тестовую базу данных и дальше обращаемся к внутренней коллекции shows. Мы можем выполнить функцию find() для любого объекта коллекции Mongo, чтобы получить курсор со всеми связанными внутренними данными.
Теперь, чтобы вывести эту информацию на страницу, давайте используем var_dump(), что является гораздо лучшей альтернативой, чем print_r(). Добавьте этот последний блок кода непосредственно под переменной $cursor:
```php
<?php
foreach ($cursor as $document) {
var_dump($document);
}
?>
```
Этот цикл `foreach()` пройдет по результатам курсора и выведет данные переменных для каждого внутреннего массива. У нас должно быть 3 объекта, отображающие данные, добавленные ранее в наши ТВ-шоу. Вы также заметите, что есть еще один ключ под названием `_id`, который является автоматически созданным идентификатором объекта для каждого документа.
Рекомендуем обратиться к Google или документации MongoDB, чтобы узнать больше о классе PHP. Информации настолько много, что ее невозможно уместить в этом вводном руководстве. Но этот небольшой PHP-скрипт должен быть примером того, насколько гибкими действительно являются базы данных Mongo! Никаких запутанных SQL-команд, никаких требований к аутентификации (если не требуется), и весь синтаксис очень легко читается.
Заключительные мысли
Разработчики, знакомые с базами данных, все еще могут испытывать трудности при чтении этой статьи. Прохождение этого руководства два или три раза все еще может оставить вас в замешательстве по некоторой терминологии. Но не стоит разочаровываться из-за начальных трудностей с Mongo. Даже неделя практики достаточно, чтобы получить хорошее понимание.
Открытая система баз данных Mongo является бесструктурной и быстро масштабируемой по сравнению с другими конкурентными системами. Вы не ограничены колонками или таблицами, и вставка данных может быть быстро выполнена с помощью синтаксиса, похожего на JSON. Также подключение ваших веб-приложений с использованием PHP часто легче, чем MySQL/MSSQL, как только вы поймете код.
Надеемся, это руководство для начинающих сможет дать прочное представление от терминологии MongoDB до установки, команд shell и легкой веб-разработки.
В целом, Mongo может не быть вашим первым выбором базы данных при создании нового веб-проекта. Но система безопасна, очень надежна и медленно набирает внимание с растущим сообществом преданных сторонников.
MongoDB предлагает мощные возможности для управления данными благодаря своей гибкости и простоте использования. Изучив основные команды shell и настройку для PHP, вы сможете эффективно работать с базами данных и создавать коллекции, как в нашем примере с ТВ-шоу. Однако для полноценного использования в веб-проектах необходимо выбрать надежный хостинг MongoDB, который поддерживает эту базу данных. Современные хостинг-провайдеры предлагают специализированные решения для MongoDB, обеспечивая высокую производительность, безопасность и масштабируемость. Это позволяет разработчикам сосредоточиться на создании приложений, не беспокоясь о технических нюансах и инфраструктуре.