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

Go入门

本指南向您介绍如何创建一个使用 MongoDB Go Driver 连接 MongoDB Atlas 集群的应用程序。如果希望使用其他驱动程序或编程语言连接到 MongoDB,请参阅我们的 MongoDB 官方驱动程序列表。

Go 驱动程序允许您从 Go 应用程序连接到 MongoDB 集群并与之通信。

MongoDB Atlas 是完全托管的云数据库服务,可在 MongoDB 集群托管数据。 在本指南中,我们将向您介绍 如何开始使用自己的免费(无需信用卡)集群。

按照以下步骤将 Go 应用程序与 MongoDB Atlas 集群进行连接。

1

创建一个新目录,并使用 go mod 初始化项目,如下命令所示:

mkdir go-quickstart
cd go-quickstart
go mod init go-quickstart
2

使用 go get 将 Go Driver添加为依赖项,如下命令所示:

go get go.mongodb.org/mongo-driver/v2/mongo

您可以在 MongoDB Atlas 上创建一个免费套餐 MongoDB 部署来存储和管理您的数据。MongoDB Altas 在云端托管和管理您的 MongoDB 数据库。

1

完成MongoDB入门指南,设立新的Atlas帐户、创建免费套餐MongoDB集群、加载数据集并与数据交互。

2

创建数据库用户后,请将该用户的用户名和密码保存在一个安全位置,以便在后续步骤中使用。

完成这些步骤后,您将在 Atlas 部署一个新的 MongoDB 集群、一个新的数据库用户,并将示例数据集加载到此集群。

您可以通过提供连接 URI(也称为连接字符串)来连接到 MongoDB 部署,它指示驱动程序如何连接到 MongoDB 部署以及连接时的行为方式。

连接字符串包含部署的主机名或 IP 地址和端口、身份验证机制、用户档案(如果适用)以及连接选项。

1

要检索您在上一节中创建的部署的连接字符串,登录您的Atlas帐户并导航到 Database 部分下的 Clusters 页面。单击新部署的 Connect 按钮。

Atlas 用户界面的集群部分中的连接按钮

如果您尚未配置数据库用户, MongoDB将提示您创建并配置新用户。

单击 Connect to your application 下的 Drivers 按钮,从 Driver 选择菜单中选择“Go”,然后从 Version 选择菜单中选择与您安装的版本最匹配的版本。

确保取消选择 View full code sample 选项以仅查看连接字符串。

2

单击连接字符串右侧的按钮以将其复制到剪贴板,如以下屏幕截图所示:

Atlas 用户界面中的连接字符串复制按钮
3

将此连接字符串粘贴到首选文本编辑器中的文件中,并将 <db_password> 占位符替换为数据库用户的密码。连接字符串已填充数据库用户的用户名。

将此文件保存到安全位置,以便在下一步中使用。

完成这些步骤后,您将拥有与 Atlas 集群相对应的连接字符串。

要学习有关使用MongoDB Go驱动程序连接到Atlas和应用连接选项的更多信息,请参阅Atlas驱动程序连接指南。

1

在您的终端中,运行以下命令以创建一个名为 MONGODB_URI 的环境变量,并将您的 Atlas 连接字符串设置为其值:

export MONGODB_URI='<your atlas connection string>'

注意

确保将连接字符串的 <db_password> 部分替换为您为拥有 atlasAdmin 权限的用户创建的密码。

2

请从项目的基目录运行以下命令,以创建一个名为 main.go 的新文件:

touch main.go
3

将以下代码复制并粘贴到您的 main.go 文件中。此代码针对 MongoDB Atlas 中的示例数据集运行查询。

package main
import (
"context"
"encoding/json"
"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() {
uri := os.Getenv("MONGODB_URI")
docs := "www.mongodb.com/zh-cn/docs/drivers/go/current/"
if uri == "" {
log.Fatal("Set your 'MONGODB_URI' environment variable. " +
"See: " + docs +
"usage-examples/#environment-variable")
}
client, err := mongo.Connect(options.Client().
ApplyURI(uri))
if err != nil {
panic(err)
}
defer func() {
if err := client.Disconnect(context.TODO()); err != nil {
panic(err)
}
}()
coll := client.Database("sample_mflix").Collection("movies")
title := "Back to the Future"
var result bson.M
err = coll.FindOne(context.TODO(), bson.M{"title": title}).
Decode(&result)
if err == mongo.ErrNoDocuments {
fmt.Printf("No document was found with the title %s\n", title)
return
}
if err != nil {
panic(err)
}
jsonData, err := json.MarshalIndent(result, "", " ")
if err != nil {
panic(err)
}
fmt.Printf("%s\n", jsonData)
}
4

从命令行使用以下命令运行示例代码:

go run main.go

当您运行 main.go 时,它会从示例数据集中输出电影的详细信息,如下所示:

{
"_id": "...",
"genres": [
"Adventure",
"Comedy",
"Sci-Fi"
],
"plot": "A young man is accidentally sent 30 years into the past...",
"title": "Back to the Future"
}

提示

如果没有收到任何输出或错误,请检查环境变量是否已正确设置,并确保已将示例数据集加载到集群。

完成这些步骤后,您有一个正常运行的应用程序,它使用 MongoDB Go Driver连接到 MongoDB 集群,对示例数据运行查询并打印结果。

增删改查操作部分了解如何使用MongoDB Go驱动程序读取和修改数据。