MongoDB, пример веб-приложения
Перейти к навигации
Перейти к поиску
Установка модуля mongodb для PHP
Операционная система: Oracle Linux 8.6 Веб-сервер: nginx + php-fpm База данных: mongodb 5.0.8
su root dnf install make dnf install php-devel dnf install php-pear dnf install php-json # если нет прямого подключения к интернету, то подключаем через прокси export http_proxy=http://proxy:3128 export https_proxy=http://proxy:3128 # установка php драйвера для mongodb pecl install mongodb # проверка, что файл mongodb.so создан ls -lh /usr/lib64/php/modules # корректируем, как у остальных модулей chmod +x /usr/lib64/php/modules/mongodb.so # создаем файл для включения модуля echo 'extension=mongodb' | tee /etc/php.d/30-mongodb.ini # разрешаем сетевое подключение к базе данных для веб-сервера setsebool -P httpd_can_network_connect on systemctl restart php-fpm systemctl restart nginx # проверяем нет ли ошибки загрузки модуля cat /var/log/messages | grep mongodb # проверяем в phpinfo наличие модуля mongodb echo '<?php phpinfo() ?>' | tee /var/www/<myhost>/phpinfo.php http://<myhost>/phpinfo.php
Создание и наполнение базы test
mongo use test db.items.insert({ name: 'eggs', quantity: 10, price: 1.50 }) db.items.insert({ name: 'bacon', quantity: 3, price: 3.50, saled: '1.07.2022' }) db.items.insert({ name: 'tomatoes', quantity: 30, price: 0.50 }) quit()
Веб-приложение
<?php // включение отображения ошибок error_reporting(-1); ini_set('display_errors', 'On'); // проверка модуля echo extension_loaded("mongodb") ? "loaded<br/>" : "not loaded<br/>"; // подключение к mongodb echo '<hr>'; $manager = new MongoDB\Driver\Manager("mongodb://127.0.0.1:27017"); var_dump($manager) . '<br/>'; echo '<hr>'; $filter = array(); $options = array(); $query = new MongoDB\Driver\Query($filter, $options); $cursor = $manager->executeQuery('test.items', $query); $result = $cursor -> toArray(); foreach ($result as $obj){ echo $obj->name . ', ' . $obj->quantity . ', ' . $obj->price; // метим звездочкой, если запись содержит атрибут saled if ( property_exists($obj,'saled') ) { echo ' * '; } echo '<br/>'; } echo '<hr>'; // quantity < 20 $filter = array("quantity" => array('$lt' => 20)); $options = array(); $query = new MongoDB\Driver\Query($filter, $options); $cursor = $manager->executeQuery('test.items', $query); $iterator = new IteratorIterator($cursor); $iterator->rewind(); while($doc = $iterator->current()) { echo $doc->name . ', ' . $doc->quantity . '<br/>'; $iterator->next(); } ?>