Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb MongoClientURI连接字符串中是否需要复制集名称?_Mongodb_Mongodb Replica Set - Fatal编程技术网

Mongodb MongoClientURI连接字符串中是否需要复制集名称?

Mongodb MongoClientURI连接字符串中是否需要复制集名称?,mongodb,mongodb-replica-set,Mongodb,Mongodb Replica Set,当从Java应用程序指定连接到MongoDB副本集的客户端URI时,我对MongoDB连接字符串选项的使用/需要感到困惑 我有3个运行的MongoDB节点实例,包括副本集,每个实例都被指定为同一副本集的成员。我想从Java应用程序连接到副本集。当我给出一个包含2个以上主机名的列表时,如果有必要在连接字符串中指定副本集名称,我对我所阅读的文档感到困惑 下面是如何启动我的3节点MongoDB实例 Server1$:mongod--replSet“rs0” Server2$:mongod--replS

当从Java应用程序指定连接到MongoDB副本集的客户端URI时,我对MongoDB连接字符串选项的使用/需要感到困惑

我有3个运行的MongoDB节点实例,包括副本集,每个实例都被指定为同一副本集的成员。我想从Java应用程序连接到副本集。当我给出一个包含2个以上主机名的列表时,如果有必要在连接字符串中指定副本集名称,我对我所阅读的文档感到困惑

下面是如何启动我的3节点MongoDB实例

  • Server1$:mongod--replSet“rs0
  • Server2$:mongod--replSet“rs0
  • Server3$:mongod--replSet“rs0
  • 我假设一个谈判会发生,一个初选会被选出,剩下的会被选出 被标记为二级

    然后,我希望通过来自Java应用程序的MongoClient调用连接到副本集。是否需要实际的副本集名称?我需要列出副本集的每个成员,还是MongoDB驱动程序只需要副本集的一个成员来确定其余成员

    MongoClient MongoClient=新的MongoClient(
    新蒙哥克利努里酒店(
    "mongodb://Server1,Server2,Server3/?replicaSet=rs0“
    )
    );
    

    我是否需要replicaSet选项?

    如果不指定replicaSet,它将以“独立”模式连接,并且您将丢失应用程序端的replicaSet功能(无故障切换)。因此,如果要将连接到的服务器故障切换到另一台服务器,则应用程序将不会跟随并重新连接到新的主服务器

    从:

    连接到副本集时,提供种子列表非常重要 至少有两个mongod实例。如果你只提供连接 指向单个mongod实例,省略replicaSet和客户端 将创建独立连接


    当前的文档不再这样说,但即使在您引用的版本中,它也会说“如果您只提供单个mongod实例的连接点,并且…”。这会让人相信,如果您提供了多个连接点,那么可以忽略replicaSet参数。