Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Docs 菜单
Docs 主页
/ / /
Go 驱动程序
/

选择连接目标

在本指南中,您可以学习;了解如何使用连接字符串和 MongoClient对象通过Go驾驶员连接到不同类型的MongoDB部署。

提示

要了解如何创建和配置 MongoClient 对象,请参阅 创建Mongo客户端 页面。

要连接到MongoDB 上的Atlas 部署,请在连接string 中包含以下元素:

  • Atlas 集群的 URL

  • MongoDB 用户名

  • MongoDB 密码

然后,将连接string传递给 MongoClient 构造函数。

当您连接到Atlas时,我们建议使用 Stable API客户端选项,以避免Atlas升级到新版本的MongoDB Server时发生重大更改。 要学习;了解有关 Stable API功能的更多信息,请参阅Stable API指南。

以下代码展示了如何创建使用 Atlas 连接字符串和 Stable API 版本的客户端、如何连接到 MongoDB 以及如何验证连接是否成功:

// Connects to MongoDB and sets a Stable API version
package main
import (
"context"
"fmt"
"log"
"os"
"go.mongodb.org/mongo-driver/v2/bson"
"go.mongodb.org/mongo-driver/v2/mongo"
"go.mongodb.org/mongo-driver/v2/mongo/options"
)
func main() {
var uri string
if uri = os.Getenv("MONGODB_URI"); uri == "" {
log.Fatal("You must set your 'MONGODB_URI' environment variable. See\n\t https://mongodb.com/zh-cn/docs/drivers/go/current/usage-examples/")
}
// Uses the SetServerAPIOptions() method to set the Stable API version to 1
serverAPI := options.ServerAPI(options.ServerAPIVersion1)
// Defines the options for the MongoDB client
opts := options.Client().ApplyURI(uri).SetServerAPIOptions(serverAPI)
// Creates a new client and connects to the server
client, err := mongo.Connect(opts)
if err != nil {
panic(err)
}
defer func() {
if err = client.Disconnect(context.TODO()); err != nil {
panic(err)
}
}()
// Sends a ping to confirm a successful connection
var result bson.M
if err := client.Database("admin").RunCommand(context.TODO(), bson.D{{"ping", 1}}).Decode(&result); err != nil {
panic(err)
}
fmt.Println("Pinged your deployment. You successfully connected to MongoDB!")
}

重要

无法再创建新的无服务器实例,并且截至 52025 5 月,所有现有无服务器实例均已迁移。 Atlas用户界面中的所有集群页面会根据使用情况显示您的实例迁移到的层。请参阅管理无服务器实例页面,详细学习;了解如何手动处理现有无服务器实例。

如果出于开发目的必须在本地计算机上运行 MongoDB Server,请完成以下步骤:

  1. 下载 MongoDB Server CommunityEnterprise 版本。

  2. 安装并配置 MongoDB Server。

  3. 启动该服务器。

重要

始终保护您的MongoDB服务器免受恶意攻击。有关安全建议列表,请参阅服务器手册中的安全检查清单。

在成功启动 MongoDB 服务器后,在驱动程序连接代码中指定连接字符串。

如果 MongoDB Server 在本地运行,您可以使用连接字符串 "mongodb://localhost:<port>",其中 <port> 是您配置服务器以侦听传入连接的端口号。

有关如何指定不同主机名或IP解决的更多信息,请参阅服务器手册中的连接字符串

要测试能否连接到服务器,请将上述代码示例中的连接字符串替换为本地主机连接字符串。

MongoDB 副本集部署是一组用于存储相同数据集的连接实例。这种配置提供了数据冗余和高数据可用性。

要连接到副本集部署,请指定每个实例的主机名和端口号(以逗号分隔),并将副本集名称指定为连接字符串中 replicaSet 参数的值。 在以下示例连接字符串中,主机名为 host1host2host3,端口号均为 27017。 副本集名称为 myRS

mongodb://host1:27017,host2:27017,host3:27017/?replicaSet=myRS

连接到副本集时,驱动程序默认执行以下操作:

  • 在给定任一节点的地址时发现所有副本集节点。

  • 将操作分派给相应节点,例如,对主节点进行写入的指令。

提示

您只能指定一台托管来连接到副本集。但是,您必须提供完整的主机列表,以确保指定托管不可用时的连接性。

要学习;了解有关副本集的更多信息,请参阅服务器手册中的复制条目。

要强制在连接字符串中指定的托管上执行操作,请指定 directConnection 选项。 直接连接表现出以下行为:

注意

Docker 中的副本集

当副本集在Docker中运行时,它可能只公开一个MongoDB端点。在这种情况下,无法发现副本集。在连接 URI 中指定 directConnection=false 或未设置此选项,可能会阻止应用程序与之连接。

在测试或开发环境中,您可以通过指定 directConnection=true 来连接到副本集。在生产环境中,我们建议配置集群,以便每个 MongoDB 实例都可以在 Docker 虚拟网络之外访问。

要使用 DNS 服务发现来查找要连接的服务的 DNS SRV记录,请在连接字符串中指定 SRV 连接格式。 如果指定此格式, Go驾驶员将自动重新扫描新主机。您的部署可以将主机添加到其拓扑结构中,而无需更改客户端配置。

以下代码显示了使用 SRV 连接格式的连接字符串:

uri := "mongodb+srv://<hostname>/"

要学习;了解有关 SRV 连接格式的更多信息,请参阅MongoDB Server手册中的 SRV 连接格式 条目。

要学习;了解有关使用 MongoClient 连接到不同MongoDB实例的更多信息,请参阅以下API文档:

后退

创建 MongoClient

在此页面上