使用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);
答案 0 :(得分:2)
连接字符串错误。新的和旧版驱动程序有2个版本,这两个版本由地图集提供:
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地址已在地图集中列入白名单。