为什么我无法使用 mongo shell 连接到副本集?

Why cant I connect to replica set using mongo shell?

我可以使用 mongo shell 版本 3.2.11 中的以下命令连接到副本集。但同样不适用于 mongo shell v3.4.1.

mongo --host \
      "replicaSet1/10.10.10.15:27001,10.10.10.16:27002,10.10.10.17:27000" mydbname \
      -u root -p root \
      --authenticationDatabase admin

 [main] Error: Failed to parse mongodb:// URL: mongodb://replicaSet1/10.10.10.15:27001,10.10.10.16:27002,10.10.10.17:27000/mydbname :

我已阅读 here 副本集地址格式自 v 3.4.1 发布以来没有改变。

为什么我无法连接到数据库?根据新格式(如果存在),解析错误是什么。

这是 MongoDB 3.4.0/3.4.1 中的已知回归:SERVER-27289: mongo --host replSet/Host:Port no longer works。已为即将发布的 MongoDB 3.4.2 版本提交修复。

您可以在受影响的 3.4.x mongo shell 中解决此问题,方法是改用标准 MongoDB Connection String URI 格式:

mongo --host mongodb://10.10.10.15:27001,10.10.10.16:27002,10.10.10.17:27000/mydbname?replicaSet=replicaSet1

您还可以使用标准 MongoDB 连接字符串作为普通参数(即没有 --host 参数):

mongo mongodb://10.10.10.15:27001,10.10.10.16:27002,10.10.10.17:27000/mydbname?replicaSet=replicaSet1

I have read here that replica set address format has not changed since v 3.4.1 release.

在 MongoDB 3.4 中添加了在 --host 参数中使用标准 MongoDB 连接字符串格式的支持,以便对齐 mongo shell使用所有官方驱动程序使用的格式的连接字符串语法。

目前 MongoDB 3.4 手册中未注明此更改,因此我已提出 DOCS-9808 进行说明。