Golang简化MongoDB操作 - Mog工具使用指南

Golang简化MongoDB操作 - Mog工具使用指南 尝试简化在 Go 中使用 MongoDB 的工具。Mog

1 回复

更多关于Golang简化MongoDB操作 - Mog工具使用指南的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


Mog 是一个优秀的 Go 语言 MongoDB 操作简化工具,它基于官方的 mongo-go-driver 封装,提供了更简洁的 API 和链式调用方式。以下通过示例代码展示其核心用法:

1. 安装与初始化

import "github.com/txjmp/mog"

// 初始化连接
func initMongo() {
    err := mog.Connect("mongodb://localhost:27017")
    if err != nil {
        panic(err)
    }
}

2. 基础 CRUD 操作

type User struct {
    ID    string `bson:"_id"`
    Name  string `bson:"name"`
    Email string `bson:"email"`
}

// 插入文档
user := User{ID: "1", Name: "John", Email: "john@example.com"}
result, err := mog.Collection("users").Insert(user)

// 查询单个文档
var foundUser User
err = mog.Collection("users").Find(mog.M{"_id": "1"}).One(&foundUser)

// 更新文档
updateResult, err := mog.Collection("users").
    Where(mog.M{"_id": "1"}).
    Update(mog.M{"$set": mog.M{"name": "John Doe"}})

// 删除文档
deleteResult, err := mog.Collection("users").
    Where(mog.M{"_id": "1"}).
    Delete()

3. 高级查询功能

// 多条件查询
var users []User
err = mog.Collection("users").
    Where(mog.M{"age": mog.Gte(18)}).
    Sort("name", -1).  // -1 表示降序
    Limit(10).
    All(&users)

// 聚合查询
pipeline := []mog.M{
    {"$match": mog.M{"status": "active"}},
    {"$group": mog.M{"_id": "$category", "count": mog.M{"$sum": 1}}},
}

var results []map[string]interface{}
err = mog.Collection("orders").Aggregate(pipeline).All(&results)

4. 事务支持

// 执行事务操作
err = mog.DoTransaction(func(session mog.Session) error {
    // 在事务中执行多个操作
    _, err := session.Collection("users").Insert(user1)
    if err != nil {
        return err
    }
    
    _, err = session.Collection("profiles").Insert(profile1)
    return err
})

5. 连接池管理

// 配置连接池选项
options := mog.DefaultOptions().
    SetMaxPoolSize(100).
    SetMinPoolSize(10).
    SetMaxConnIdleTime(30 * time.Minute)

err := mog.ConnectWithOptions("mongodb://localhost:27017", options)

Mog 通过简洁的链式调用和类型安全的操作,显著降低了 MongoDB 在 Go 项目中的使用复杂度。其 API 设计符合 Go 语言的惯用法,同时保持了与官方驱动程序的兼容性,是提升开发效率的理想选择。

回到顶部