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
实例。要设立任何其他选项,请从选项包调用相关辅助方法。
提示
通过连接池重复使用客户端
要了解有关连接选项的更多信息,请参阅“连接选项”一节。要了解有关创建客户端的更多信息,请参阅 API 文档中的客户端和 Connect()。
您可以将 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 文档: