对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

创建 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 文档: