Подключение к базе данных mongodb в переполнении стека

Подключение к атласу mongodb и попытка написать простой документ приводит к следующей ошибке. Что я делаю неправильно?

$manager = new MongoDB\Driver\Manager("mongodb://admin:[email protected]:27017/db?ssl=false&replicaSet=test-shard-0&authSource=admin&serverSelectionTryOnce=false");

var_dump($manager);

$bulk = new MongoDB\Driver\BulkWrite;

$bulk->insert(['x' => 1]);
$manager->executeBulkWrite('db.collection', $bulk);

Фатальная ошибка: Uncaught
MongoDB \ Driver \ Exception \ ConnectionTimeoutException: не подходит
серверы найдены: serverselectiontimeoutms timed out: [соединение закрыто
вызов ismaster на ‘test-shard-00-00-waf4c.mongodb.net:27017’] в
/Applications/AMPPS/www/mongodb/liveserver.php:63

Когда я var_dump $ manager, я получаю:

объект (MongoDB \ Driver \ Manager) # 1 (2) {[«uri»] => строка (64)
«admin: [email protected]: 27017 /» [«cluster»] =>
массив (0) {}}

1

Решение

Я использую PHP версии 7.0 на Ubuntu 16.04. Это подробное решение. Пропустите те части, которые вы успешно выполнили.
Сначала я вручную установил mongodb, а затем драйвер mongodb-php.

1) Установка монго дб. Введите следующие команды:

$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927

$ echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list

$ sudo apt-get update

$ sudo apt-get install -y mongodb-org

Чтобы правильно запустить Mongdb как сервис, то есть автоматически запустить Mongodb при запуске системы, выполните следующие действия:

Создайте файл mongodb.service в / etc / systemd / system /, введя команду:

$ sudo nano /etc/systemd/system/mongodb.service

Вставьте в него следующее содержимое:

[Unit]
Description=High-performance, schema-free document-oriented database
After=network.target

[Service]
User=mongodb
ExecStart=/usr/bin/mongod --quiet --config /etc/mongod.conf

[Install]
WantedBy=multi-user.target

Затем введите следующие команды:

$ sudo systemctl start mongodb

$ sudo systemctl enable mongodb

2) Установка драйвера mongo-php:

$ sudo pecl install mongodb

Также вы можете получить сообщение об ошибке: phpize not found. Phpize — это команда, которая используется для создания среды сборки. Эта ошибка может появиться во время установки любого расширения pecl. Чтобы решить эту проблему, команда phpize не найдена, пользователь должен установить пакет php5-dev.
Для его установки введите команду:

 $ sudo apt-get install php7.0-dev

Затем в файле php.ini, который находится в каталоге /etc/php/7.0/apache2, добавьте расширение mongo db:

$ sudo nano /etc/php/7.0/apache2/php.ini

Добавьте следующую строку в файл:

extension = mongodb.so;

(Точно так же, как вы знаете, точное местоположение файла mongodb.so находится в /usr/lib/php/20151012/mongodb.so.)

Таким образом, dong монго устанавливается вместе с его драйвером.

3) Теперь имейте в виду, что классы mongo-php были изменены. Большинство доступных ресурсов в сети дают решения, использующие старые классы, которые заменяются. Ниже приведены ссылки, на которые вы можете ссылаться:

http://php.net/manual/en/set.mongodb.php

http://zetcode.com/db/mongodbphp/

Вот несколько команд для основных операций с базой данных:

$mng = new MongoDB\Driver\Manager(); // Driver Object created

Чтобы вставить данные в базу данных:

$bulk = new MongoDB\Driver\BulkWrite;

$doc = ["_id" => new MongoDB\BSON\ObjectID, "data" => $someData, "info" => $someInfo];

$bulk->insert($doc);

$mng->executeBulkWrite('dbName.collectionName', $bulk);

Для получения данных:

$query = new MongoDB\Driver\Query([]);

$rows = $mng->executeQuery("dbName.collectionName", $query);

foreach ($rows as $row)
{
echo "$row->data - $row->info\n";
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]