gpt4 book ai didi

mongodb - mongoDb 连接字符串中的 +srv 是什么意思

转载 作者:行者123 更新时间:2023-12-04 11:09:20 27 4
gpt4 key购买 nike

我是 MongoDB 的新手,刚遇到两种类型的连接字符串。

  • mongodb://[用户名:密码@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
  • mongodb+srv://[用户名:密码@]host[/[数据库][?options]]

  • 我知道第一个。但是不熟悉2nd中的(+srv)。
       let connectionUrl;
    if (username && password)
    connectionUrl = `mongodb://${username}:${password}@${host}:${
    port || 27017
    }/${databaseName}`;
    else
    connectionUrl = `mongodb://${host}:${
    port || 27017
    }/${databaseName}`;
    console.log(connectionUrl, "connectionUrlconnectionUrl");
    let connection = await mongoose.createConnection(connectionUrl, {
    useNewUrlParser: true,
    });
    return connection;
    现在问题用户可以输入用户名、密码、主机名等...
    但是有什么方法可以知道何时添加 (+srv) 因为我正在尝试使用本地主机和 MongoDB 图集。
    Atlas 与 +srv 一起工作正常,但在 localhost 的情况下,它会引发错误。

    最佳答案

    在 MongoDB 3.6 中引入了 seed list 的概念使用 DNS 记录指定,特别是 SRVTXT记录。您会记得在 MongoDB 中使用副本集时,客户端在连接时必须至少指定一个副本集成员(并且可以指定其中的几个)。这允许客户端连接到副本集,即使客户端指定的节点之一不可用
    您可以在 2.2.12 或更高版本的连接字符串上看到此 URL 的示例
    enter image description here
    请注意,如果没有 SRV 记录配置,我们必须列出多个节点(在 Atlas 的情况下,我们始终包括所有集群成员,尽管这不是必需的)。我们还必须指定 ssl 和 replicaSet 选项
    对于 3.4 或更早版本的驱动程序,我们必须使用 MongoDB URI syntax 在命令行上指定所有选项。 .
    SRV 记录的使用消除了每个客户端为集群传递一组完整状态信息的要求。相反,单个 SRV 记录标识与集群关联的所有节点(及其端口号),关联的 TXT 记录定义 URI 的选项。
    enter image description here
    查看 Reference

    关于mongodb - mongoDb 连接字符串中的 +srv 是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66225004/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com