go语言使用MongoDB
在 Go 语言中,可以使用 mongo-go-driver
来操作 MongoDB。这是一个官方的 MongoDB 驱动程序。以下是如何使用 Go 语言操作 MongoDB 的示例,包括连接到 MongoDB、插入数据、查询数据、更新数据和删除数据。
安装 MongoDB Go 驱动程序
首先,安装 MongoDB Go 驱动程序:
go get go.mongodb.org/mongo-driver/mongo go get go.mongodb.org/mongo-driver/mongo/options
示例代码
以下是一个完整的示例代码,展示如何使用 Go 语言与 MongoDB 进行基本的 CRUD 操作。
package main import ( "context" "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) } // 检查连接 err = client.Ping(context.TODO(), nil) if err != nil { log.Fatal(err) } fmt.Println("Connected to MongoDB!") // 获取数据库和集合 collection := client.Database("testdb").Collection("devices") // 插入文档 device := bson.D{ {"ip", "192.168.1.1"}, {"mac", "00:1A:2B:3C:4D:5E"}, {"device_name", "Device1"}, {"protocol", "MQTT"}, {"packet_size", 1024}, {"upstream_data", 512}, {"downstream_data", 512}, } insertResult, err := collection.InsertOne(context.TODO(), device) if err != nil { log.Fatal(err) } fmt.Println("Inserted a single document: ", insertResult.InsertedID) // 查询文档 var result bson.D filter := bson.D{{"device_name", "Device1"}} err = collection.FindOne(context.TODO(), filter).Decode(&result) if err != nil { log.Fatal(err) } fmt.Println("Found a single document: ", result) // 更新文档 update := bson.D{ {"$set", bson.D{ {"device_name", "UpdatedDevice1"}, }}, } updateResult, err := collection.UpdateOne(context.TODO(), filter, update) if err != nil { log.Fatal(err) } fmt.Printf("Matched %v documents and updated %v documents.\n", updateResult.MatchedCount, updateResult.ModifiedCount) // 删除文档 deleteResult, err := collection.DeleteOne(context.TODO(), filter) if err != nil { log.Fatal(err) } fmt.Printf("Deleted %v documents in the devices collection\n", deleteResult.DeletedCount) // 关闭连接 err = client.Disconnect(context.TODO()) if err != nil { log.Fatal(err) } fmt.Println("Connection to MongoDB closed.") }
代码说明
-
连接到 MongoDB:
- 使用
options.Client().ApplyURI("mongodb://localhost:27017")
设置客户端连接选项。 - 使用
mongo.Connect(context.TODO(), clientOptions)
连接到 MongoDB。 - 使用
client.Ping(context.TODO(), nil)
检查连接是否成功。
- 使用
-
获取数据库和集合:
- 使用
client.Database("testdb").Collection("devices")
获取数据库和集合。
- 使用
-
插入文档:
- 使用
collection.InsertOne(context.TODO(), device)
插入单个文档。
- 使用
-
查询文档:
- 使用
collection.FindOne(context.TODO(), filter).Decode(&result)
查询单个文档。
- 使用
-
更新文档:
- 使用
collection.UpdateOne(context.TODO(), filter, update)
更新单个文档。
- 使用
-
删除文档:
- 使用
collection.DeleteOne(context.TODO(), filter)
删除单个文档。
- 使用
-
关闭连接:
- 使用
client.Disconnect(context.TODO())
关闭连接。
- 使用
本文作者:jikefan
本文链接:https://www.cnblogs.com/jikefan/articles/18269344
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。