为什么我不能使用mongo shell连接到副本集?

时间:2017-01-23 12:45:11

标签: mongodb 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发布以来,副本集地址格式未发生变化。

为什么我无法连接到db?什么是解析错误,根据新格式(如果它在那里)。

1 个答案:

答案 0 :(得分:6)

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

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

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
  

我在这里读到,自v 3.4.1发布以来,副本集地址格式没有改变。

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

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