使用 Golang 和 MongoDB 官方驱动程序(mongo-go-driver)实现增删改查

以下是使用 Golang 和 MongoDB 官方驱动程序(mongo-go-driver)实现增删改查的示例代码:

--javascripttypescriptbashsqljsonhtmlcssccppjavarubypythongorustmarkdown

package main

import (
    "context"
    "fmt"
    "log"

    "go.mongodb.org/mongo-driver/bson"
    "go.mongodb.org/mongo-driver/mongo"
    "go.mongodb.org/mongo-driver/mongo/options"
)

type Person struct {
    Name    string `bson:"name"`
    Age     int    `bson:"age"`
    Address string `bson:"address"`
}

func main() {
    // 创建一个 MongoDB 客户端连接
    client, err := mongo.NewClient(options.Client().ApplyURI("mongodb://localhost:27017"))
    if err != nil {
        log.Fatal(err)
    }

    // 创建一个上下文对象
    ctx := context.Background()

    // 连接到 MongoDB 服务
    err = client.Connect(ctx)
    if err != nil {
        log.Fatal(err)
    }

    // 获取要操作的集合
    collection := client.Database("testdb").Collection("persons")

    // 插入数据
    p1 := Person{Name: "Tom", Age: 20, Address: "Shanghai"}
    _, err = collection.InsertOne(ctx, p1)
    if err != nil {
        log.Fatal(err)
    }

    // 查询数据
    var p2 Person
    err = collection.FindOne(ctx, bson.M{"name": "Tom"}).Decode(&p2)
    if err != nil {
        log.Fatal(err)
    }
    fmt.Printf("Name: %s, Age: %d, Address: %s\n", p2.Name, p2.Age, p2.Address)

    // 更新数据
    filter := bson.M{"name": "Tom"}
    update := bson.M{"$set": bson.M{"age": 25}}
    _, err = collection.UpdateOne(ctx, filter, update)
    if err != nil {
        log.Fatal(err)
    }

    // 删除数据
    _, err = collection.DeleteOne(ctx, bson.M{"name": "Tom"})
    if err != nil {
        log.Fatal(err)
    }

    // 断开连接
    err = client.Disconnect(ctx)
    if err != nil {
        log.Fatal(err)
    }
}

这个例子定义了一个 Person 结构体来表示 MongoDB 集合中的文档。在 main 函数中,首先创建一个 MongoDB 客户端连接,并连接到 MongoDB 服务。然后,获取要操作的集合,执行插入、查询、更新和删除操作,最后断开连接。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值