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())
关闭连接。
- 使用