在 Go 语言中,调用 MongoDB 通常涉及使用 MongoDB Go 驱动来执行数据库操作。
在 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)}
️代码说明
展开全文- ️连接到 MongoDB:
- 使用 mongo.Connect 连接到 MongoDB 服务器。
- 使用 client.Ping 检查连接是否成功。
- ️选择数据库和集合:
- 使用 client.Database("testdb") 选择数据库。
- 使用 database.Collection("testcollection") 选择集合。
- ️插入文档:
- 使用 collection.InsertOne 插入一个文档。
- 文档以 bson.D 格式表示,bson.D 是一个有序的键值对列表。
- ️查询文档:
- 使用 collection.FindOne 查询单个文档。
- 使用 Decode 方法将查询结果解码为 bson.M 类型。
- ️上下文管理:
- 使用 context.WithTimeout 创建带有超时的上下文,以防止操作挂起。
- ️关闭连接:
- 使用 client.Disconnect 在程序结束时关闭与 MongoDB 的连接。
️运行代码
- ️确保 MongoDB 服务器正在运行:
- 默认情况下,代码连接到 mongodb://localhost:27017。
- 如果 MongoDB 运行在其他地址或端口,请修改 ApplyURI 中的 URI。
- ️运行代码:
- bash
- go run main.go
- ️查看输出:
- 如果连接成功,将输出 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 驱动进行基本的数据库操作,包括连接、插入和查询文档。