Docs 菜单
Docs 主页
/ / /
Go

Go 驱动程序快速入门

在此页面上

  • 设立您的项目
  • 使用 Go Mod 初始化项目
  • 添加 MongoDB 作为依赖项
  • 添加其他依赖项
  • 创建 MongoDB 集群
  • 在 Atlas 中设置免费级集群
  • 从应用程序查询 MongoDB 集群
  • 后续步骤

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

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

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

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

创建新目录并使用 go mod 初始化您的项目。

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

使用 go get 将 Go 驱动程序添加为依赖项。

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

使用 go get 添加任何其他依赖项。本快速入门使用 godotenv 包从环境变量中读取 MongoDB 连接字符串,避免在源代码中嵌入凭据。

go get github.com/joho/godotenv

设置 Go 项目依赖项后,创建一个 MongoDB 集群,而您可在其中存储和管理数据。通读 Atlas 入门指南,以便设置新的 Atlas 账户、免费级 MongoDB 集群、加载数据集并与数据交互。

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

在此步骤中,您将创建并运行一个应用程序, 该应用程序使用 Go 驱动程序连接到 MongoDB 集群并对样本数据运行查询。

您可以在名为连接字符串的字符串中向驱动程序传递有关在何处和如何连接到 MongoDB 集群的指令。此字符串包含有关集群的主机名或 IP 地址和端口、身份验证机制、用户档案(如果适用)以及其他连接选项的信息。

要检索在上一步中创建的集群和用户的连接字符串,请登录 Atlas 帐户并前往 Database 部分,然后单击要连接到的集群的相应 Connect 按钮,如下图所示。

Atlas Connection GUI 集群选择屏幕

继续执行 Connect Your Application(连接应用程序)步骤并选择 Go 驱动程序。然后,单击 Copy(复制)按钮将连接字符串 复制到剪贴板,如下所示。

Atlas Connection GUI 连接字符串屏幕

将您的 Atlas 连接字符串保存在安全的位置,以便您在下一步操作时 能访问到。

要了解有关通过 Atlas 连接到 Go 驱动程序的更多信息,请参阅 Atlas 驱动程序连接指南 ,然后从选择您的语言下拉列表中选择 Go

接下来,在项目的基目录中创建一个名为 main.go 的文件来包含您的应用程序。使用以下示例代码对 MongoDB Atlas 中的示例数据集运行查询。

将您的 MongoDB Atlas 连接字符串指定为 uri 变量的值,或者创建一个名为 MONGODB_URI 的环境变量并将您的 Atlas 连接字符串设置为其值。

export MONGODB_URI='<your atlas connection string>'

注意

确保将连接字符串的“”部分替换为您为具有 atlasAdmin 权限的用户创建的密码。

package main
import (
"context"
"encoding/json"
"fmt"
"log"
"os"
"github.com/joho/godotenv"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
)
func main() {
if err := godotenv.Load(); err != nil {
log.Println("No .env file found")
}
uri := os.Getenv("MONGODB_URI")
if uri == "" {
log.Fatal("Set your 'MONGODB_URI' environment variable. " +
"See: " +
"www.mongodb.com/zh-cn/docs/drivers/go/current/usage-examples/#environment-variable")
}
client, err := mongo.Connect(context.TODO(), 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.D{{"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)
}

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

go run main.go

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

{
"_id": "573a1398f29313caabce9682",
...
"title": "Back to the Future",
...
}

如果没有收到任何输出或错误,请检查环境变量是否已正确设置, 以及是否已将样本数据集加载到 MongoDB Atlas 集群。

提示

如果您的输出为空,请确保已将示例数据集加载到集群中。

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

通过我们的基础知识 CRUD 指南学习如何使用 Go 驱动程序读取和修改数据,或者通过 用法示例,学习如何执行常见操作。

后退

MongoDB Go Driver