连接到mongodb地图集并尝试编写简单的文档会出现以下错误。我在做什么错了?
$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超时:[连接已关闭 在“ test-shard-00-00-waf4c.mongodb.net:27017”上调用ismaster /Applications/AMPPS/www/mongodb/liveserver.php:63
当我var_dump $ manager时,我得到:
object(MongoDB \ Driver \ Manager)#1(2){[“ uri”] =>字符串(64) “ admin:admin@test-shard-00-00-rbgc.mongodb.net:27017 /” [“集群”] => array(0){}}
答案 0 :(得分:1)
我在ubuntu 16.04上使用php版本7.0。这是一个详细的解决方案。跳过成功执行的部分。 首先,我手动安装了mongodb,然后为其安装了mongodb-php驱动程序。
1)安装mongo db。输入以下命令:
$ 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
在文件中添加以下行:
extension = 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";
}