0

使用 mongodb 驱动程序 1.5.2 从共享主机连接到 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) { } }

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

$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);
4

1 回答 1

2

连接字符串错误。新旧驱动程序有 2 个版本,两个版本均由 atlas 提供:

在此处输入图像描述

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 地址在地图集中列入白名单。

于 2018-10-03T16:43:14.730 回答