共享主机上的PHP MongoDB驱动程序未连接到地图集

时间:2018-10-03 12:48:23

标签: php mongodb mongodb-query mongodb-php mongodb-atlas

使用mongodb驱动程序1.5.2从sharedhosting连接到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超时:[连接已关闭   在“ 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){}}

我也尝试了以下方法,但错误始终相同:

$manager = new MongoDB\Driver\Manager('mongodb://admin:admin@pirat-shard-00-00-vegbq.gcp.mongodb.net:27017/db?ssl=falseweak_cert_validation=false');

$bulk = new MongoDB\Driver\BulkWrite;


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

1 个答案:

答案 0 :(得分:2)

连接字符串错误。新的和旧版驱动程序有2个版本,这两个版本由地图集提供:

enter image description here

3.6+版本应为:

mongodb+srv://admin:admin@test-shard-rbgc.mongodb.net:27017/db?retryWrites=true

它是mongodb+srv://,是分片的单个地址,几乎没有参数。它应该与mongodb-1.5一起使用。如果没有,请尝试旧版:

3.4-版本应为(一行):

mongodb://admin:admin@test-shard-00-00-rbgc.mongodb.net:27017,
   test-shard-00-01-rbgc.mongodb.net:27017,
   test-shard-00-02-rbgc.mongodb.net:27017
   /db?ssl=true&replicaSet=Test-shard-0&authSource=admin&retryWrites=true

它是mongodb://,URL中副本集的所有成员的列表,参数中副本集的名称等。

此外,请确保服务器IP地址已在地图集中列入白名单。

相关问题