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.")
}

代码说明

  1. 连接到 MongoDB

    • 使用 options.Client().ApplyURI("mongodb://localhost:27017") 设置客户端连接选项。
    • 使用 mongo.Connect(context.TODO(), clientOptions) 连接到 MongoDB。
    • 使用 client.Ping(context.TODO(), nil) 检查连接是否成功。
  2. 获取数据库和集合

    • 使用 client.Database("testdb").Collection("devices") 获取数据库和集合。
  3. 插入文档

    • 使用 collection.InsertOne(context.TODO(), device) 插入单个文档。
  4. 查询文档

    • 使用 collection.FindOne(context.TODO(), filter).Decode(&result) 查询单个文档。
  5. 更新文档

    • 使用 collection.UpdateOne(context.TODO(), filter, update) 更新单个文档。
  6. 删除文档

    • 使用 collection.DeleteOne(context.TODO(), filter) 删除单个文档。
  7. 关闭连接

    • 使用 client.Disconnect(context.TODO()) 关闭连接。
posted @ 2024-06-26 16:25  Jikefan  阅读(74)  评论(0)    收藏  举报