1

连接到 mongodb atlas 并尝试编写一个简单的文档会出现以下错误。我究竟做错了什么?

$manager = new MongoDB\Driver\Manager("mongodb://admin:admin@test-shard-00-00-rbgc.mongodb.net: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);

致命错误:未捕获的 MongoDB\Driver\Exception\ConnectionTimeoutException:未找到合适的服务器:serverselectiontimeoutms 超时:/Applications/AMPPS 中的 [connection closed calling ismaster on 'test-shard-00-00-waf4c.mongodb.net:27017'] /www/mongodb/liveserver.php:63

当我对 $manager 进行 var_dump 时,我得到:

对象(MongoDB\Driver\Manager)#1 (2) { ["uri"]=> string(64) "admin:admin@test-shard-00-00-rbgc.mongodb.net:27017/" ["cluster "]=> 数组(0) { } }

4

1 回答 1

1

我在 ubuntu 16.04 上使用 php 7.0 版。这是一个详细的解决方案。跳过您已成功执行的部分。首先,我手动安装了 mongodb,然后为它安装了 mongodb-php 驱动程序。

1) 安装 mongo 数据库。输入以下命令:

$ 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,请按照以下步骤操作:

通过输入以下命令在 /etc/systemd/system/ 中创建文件 mongodb.service:

$ 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。Phpize 是一个用于创建构建环境的命令。此错误可能出现在安装任何 pecl 扩展时。要解决找不到 phpize 命令的问题,用户必须安装 php5-dev 包。要安装它,请输入命令:

 $ sudo apt-get install php7.0-dev

然后在 /etc/php/7.0/apache2 目录下的 php.ini 文件中,添加 mongo db 扩展名:

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

在文件中添加以下行:

扩展 = mongodb.so;

(你知道,文件 mongodb.so 的确切位置在 /usr/lib/php/20151012/mongodb.so 中。)

因此,mongo db 与其驱动程序一起安装。

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";
    }
于 2018-06-27T06:59:11.227 回答