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 语言的惯用法,同时保持了与官方驱动程序的兼容性,是提升开发效率的理想选择。

