在 Go 语言中,调用 MongoDB 通常涉及使用 MongoDB Go 驱动来执行数据库操作。

2025-04-20ASPCMS社区 - fjmyhfvclm

在 Go 语言中,调用 MongoDB 通常涉及使用 MongoDB Go 驱动来执行数据库操作。以下是一个完整的示例代码,展示如何连接到 MongoDB 数据库、插入文档、查询文档以及关闭连接。

️示例代码

go

package main import ( "" "fmt" "log" "time" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo/options") func main() { // 设置 MongoDB 客户端选项 clientOptions := options.Client().ApplyURI("mongodb://localhost:27017") // 连接到 MongoDB client, err := mongo.Connect(context.TODO(), clientOptions) if err != nil { log.Fatal(err) } defer func() { if err = client.Disconnect(context.TODO()); err != nil { log.Fatal(err) } }() // 检查连接 ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) defer cancel() err = client.Ping(ctx, nil) if err != nil { log.Fatal(err) } fmt.Println("Connected to MongoDB!") // 选择数据库和集合 database := client.Database("testdb") collection := database.Collection("testcollection") // 插入文档 insertResult, err := collection.InsertOne(ctx, bson.D{ {Key: "name", Value: "Alice"}, {Key: "age", Value: 30}, {Key: "city", Value: "New York"}, }) if err != nil { log.Fatal(err) } fmt.Println("Inserted document ID:", insertResult.InsertedID) // 查询文档 var result bson.M err = collection.FindOne(ctx, bson.D{{Key: "name", Value: "Alice"}}).Decode(&result) if err != nil { log.Fatal(err) } fmt.Println("Found document:", result) // 示例:插入多个文档(可选) // insertManyResult, err := collection.InsertMany(ctx, []interface{}{ // bson.D{{Key: "name", Value: "Bob"}, {Key: "age", Value: 25}, {Key: "city", Value: "Los Angeles"}}, // bson.D{{Key: "name", Value: "Charlie"}, {Key: "age", Value: 35}, {Key: "city", Value: "Chicago"}}, // }) // if err != nil { // log.Fatal(err) // } // fmt.Println("Inserted multiple document IDs:", insertManyResult.InsertedIDs)}

️代码说明

展开全文
  1. ️连接到 MongoDB
  • 使用 mongo.Connect 连接到 MongoDB 服务器。
  • 使用 client.Ping 检查连接是否成功。
  1. ️选择数据库和集合
  • 使用 client.Database("testdb") 选择数据库。
  • 使用 database.Collection("testcollection") 选择集合。
  1. ️插入文档
  • 使用 collection.InsertOne 插入一个文档。
  • 文档以 bson.D 格式表示,bson.D 是一个有序的键值对列表。
  1. ️查询文档
  • 使用 collection.FindOne 查询单个文档。
  • 使用 Decode 方法将查询结果解码为 bson.M 类型。
  1. ️上下文管理
  • 使用 context.WithTimeout 创建带有超时的上下文,以防止操作挂起。
  1. ️关闭连接
  • 使用 client.Disconnect 在程序结束时关闭与 MongoDB 的连接。

️运行代码

  1. ️确保 MongoDB 服务器正在运行
  • 默认情况下,代码连接到 mongodb://localhost:27017。
  • 如果 MongoDB 运行在其他地址或端口,请修改 ApplyURI 中的 URI。
  1. ️运行代码
  2. bash
  3. go run main.go
  4. ️查看输出
  • 如果连接成功,将输出 Connected to MongoDB!。
  • 如果插入和查询成功,将输出插入的文档 ID 和查询结果。

️注意事项

  • ️MongoDB 版本:确保 MongoDB 服务器版本为 2.6 或更高。
  • ️Go 版本:建议使用 Go 1.13 或更高版本。
  • ️依赖管理:确保已安装 MongoDB Go 驱动,可以通过 go get go.mongodb.org/mongo-driver/mongo 安装。

通过这个示例,您可以了解如何在 Go 中使用 MongoDB Go 驱动进行基本的数据库操作,包括连接、插入和查询文档。

全部评论