Go 驱动程序快速入门
本页内容
本指南向您展示如何创建一个使用 Go 驱动程序 连接到 MongoDB Atlas 集群 的应用程序。如果您希望使用不同的驱动程序或编程语言连接到 MongoDB,请参阅我们官方 MongoDB 驱动程序列表.
Go 驱动程序允许您从 Go 应用程序连接到并与 MongoDB 集群进行通信。
MongoDB Atlas 是一个完全托管的云数据库服务,在 MongoDB 集群上托管您的数据。在本指南中,我们向您展示如何开始使用您自己的免费(无需信用卡)集群。
按照以下步骤将您的 Go 应用程序与 MongoDB Atlas 集群连接。
设置您的项目
使用Go Mod初始化项目
创建一个新目录,并使用go mod
.
mkdir go-quickstart cd go-quickstart go mod init go-quickstart
将MongoDB添加为依赖项
使用go get
将Go驱动程序添加为依赖项。
go get go.mongodb.org/mongo-driver/mongo
添加其他依赖项
使用 go get
添加任何额外的依赖项。此快速入门指南使用 godotenv
包从环境变量中读取 MongoDB 连接字符串,以避免在源代码中嵌入凭据。
go get github.com/joho/godotenv
创建 MongoDB 集群
在 Atlas 中设置免费层集群
在设置 Go 项目的依赖项后,创建一个 MongoDB 集群,您可以在此集群中存储和管理数据。按照 在 Atlas 中开始 指南设置新的 Atlas 帐户、免费层 MongoDB 集群、加载数据集以及与数据交互。
完成 Atlas 指南中的步骤后,您应该在 Atlas 中部署了一个新的 MongoDB 集群,一个新数据库用户,并且 样本数据集已加载 到您的集群中。
连接到您的集群
在此步骤中,您将创建并运行一个应用程序,该应用程序使用Go驱动程序连接到您的MongoDB集群并在示例数据上运行查询。
您将连接指令传递给驱动程序,以字符串形式称为连接字符串,其中包含有关集群的主机名或IP地址和端口号、认证机制、适用时的用户凭证和其他连接选项的信息。
要获取之前步骤中创建的集群和用户的连接字符串,请登录到您的Atlas账户,并导航到数据库部分,并单击要连接到的集群的连接按钮,如下所示。

转到连接您的应用程序步骤,选择Go驱动程序。然后,单击复制按钮以将连接字符串复制到您的剪贴板,如下所示。

将您的Atlas连接字符串保存在安全的位置,以便在下一步中使用。
有关通过Atlas连接到Go驱动程序的更多信息,请参阅Atlas驱动程序连接指南,并从选择您的语言下拉菜单中选择Go。
从您的应用程序查询MongoDB集群
接下来,在项目的根目录中创建一个名为main.go
的文件来存放您的应用程序。使用以下示例代码在MongoDB Atlas的示例数据集中运行查询。
将您的MongoDB Atlas连接字符串指定为uri
变量的值,或创建一个名为MONGODB_URI
的环境变量,并将您的Atlas连接字符串设置为它的值。
export MONGODB_URI='<your atlas connection string>'
注意
请确保将连接字符串中的"<password>"部分替换为您为具有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") docs := "www.mongodb.com/docs/drivers/go/current/" if uri == "" { log.Fatal("Set your 'MONGODB_URI' environment variable. " + "See: " + docs + "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驱动程序读取和修改数据,或在我们的使用示例.