Overview
在本指南中,您可以学习;了解如何使用Go驾驶员连接到 MongoDB Atlas部署、 MongoDB实例或副本集。
要连接到MongoDB 部署,您需要满足以下两个条件:
连接 URI,也称为连接字符串,它告诉Go驾驶员要连接到哪个MongoDB 部署。
MongoClient对象,该对象创建与MongoDB 部署的连接并对其执行操作。
您可以使用 options.Client()
自定义Go驾驶员在连接到MongoDB时的行为方式。
连接 URI
标准连接string包括以下组件:
组件 | 说明 |
---|---|
| 必需。将其标识为标准连接格式中字符串的前缀。 |
| 可选。身份验证凭证。如果包含这些内容,客户端将根据 |
| 必需。 运行 MongoDB 的主机和可选端口号。 如果不包含端口号,驱动程序将使用默认端口 |
| 可选。如果连接字符串包含 |
| 可选。 一个查询string ,它将特定于连接的选项指定为 |
提示
要检索Atlas部署的连接字符串,请按照快速入门指南进行操作。
有关创建连接string 的更多信息,请参阅 MongoDB Server文档中的 连接字符串 。
环境变量
您可以使用以下代码连接字符串作为环境变量访问权限:
uri := os.Getenv("MONGODB_URI")
可使用 GodotenV 来定义环境变量。
.env
在项目根目录下的 文件中添加以下应用程序配置,将占位符替换为部署连接字符串的值。要学习;了解更多信息,请参阅 GoDotEnv 文档。
MONGODB_URI=mongodb+srv://<db_username>:<db_password>@<cluster-url>?retryWrites=true&w=majority
创建客户端以连接到MongoDB Atlas
要连接到 MongoDB,必须创建一个客户端。客户端可管理您的连接并运行数据库命令。
您可以通过将 ClientOptions
对象传递给 Connect()
方法,创建使用连接字符串和其他客户端选项的客户端。
要指定连接 URI,请将其传递给 ApplyURI()
方法,该方法会返回一个新的 ClientOptions
实例。要设立任何其他选项,请从选项包调用相关辅助方法。
提示
通过连接池重复使用客户端
我们建议您使用连接池来跨会话和操作重复使用客户端。您可以使用同一Client
实例来执行多个任务,而不是每次都创建一个新的。Client
类型可以安全地被多个 goroutine 并发使用。要进一步学习;了解连接池在驾驶员中的工作原理,请参阅连接池指南。
要学习;了解有关连接选项的更多信息,请参阅连接选项部分。要学习;了解有关创建客户端的更多信息,请参阅 Client 和 Connect() 的API文档。
您可以将 Stable API 版本作为一个选项设置,以避免升级到新的服务器版本时出现破坏性变更 (breaking change)。要了解有关 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!") }
其他资源
有关本指南中概念的更多信息,请参阅以下文档:
手册中的 连接字符串MongoDB Server
API 文档
要进一步了解本指南所讨论的方法和类型,请参阅以下 API 文档: