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 Atlas部署、 MongoDB实例或副本集。

要连接到MongoDB 部署,您需要满足以下两个条件:

  • 连接 URI,也称为连接字符串,它告诉Go驾驶员要连接到哪个MongoDB 部署。

  • MongoClient对象,该对象创建与MongoDB 部署的连接并对其执行操作。

您可以使用 options.Client() 自定义Go驾驶员在连接到MongoDB时的行为方式。

标准连接string包括以下组件:

组件
说明

mongodb://

必需。将其标识为标准连接格式中字符串的前缀。

username:password

可选。身份验证凭证。如果包含这些内容,客户端将根据 authSource 中指定的数据库对用户进行身份验证。有关 authSource 连接选项的更多信息,请参阅 连接故障排除指南。

host[:port]

必需。 运行 MongoDB 的主机和可选端口号。 如果不包含端口号,驱动程序将使用默认端口27017

/defaultauthdb

可选。如果连接字符串包含 username:password@身份验证凭证但不包含 authSource 选项,则要使用的身份验证数据库。 当您不带参数调用 client.db() 时,这就是使用的数据库。如果不包含此组件,客户端将根据 admin数据库对用户进行身份验证。

?<options>

可选。 一个查询string ,它将特定于连接的选项指定为 <name>=<value> 对。 有关这些选项的完整说明,请参阅指定连接选项

提示

要检索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,必须创建一个客户端。客户端可管理您的连接并运行数据库命令。

您可以通过将 ClientOptions 对象传递给 Connect() 方法,创建使用连接字符串和其他客户端选项的客户端。

要指定连接 URI,请将其传递给 ApplyURI() 方法,该方法会返回一个新的 ClientOptions实例。要设立任何其他选项,请从选项包调用相关辅助方法。

提示

通过连接池重复使用客户端

我们建议您使用连接池来跨会话和操作重复使用客户端。您可以使用同一 Client实例来执行多个任务,而不是每次都创建一个新的。Client 类型可以安全地被多个 goroutine 并发使用。要进一步学习;了解连接池在驾驶员中的工作原理,请参阅连接池指南。

要了解有关连接选项的更多信息,请参阅“连接选项”一节。要了解有关创建客户端的更多信息,请参阅 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!")
}

有关本指南中概念的更多信息,请参阅以下文档:

要进一步了解本指南所讨论的方法和类型,请参阅以下 API 文档:

后退

连接

在此页面上