MongoDB中间件工具mgm入门介绍丨【绽放吧!数据库】
前言
众所周知,MongoDB 是一个通用、基于文档的分布式数据库,在云原生生态下具有非常强大的适应性,帮助现代应用程序开发人员迎接云时代的到来。就数据库而言,效率是一个永不过时的话题,这一点也是 MongoDB 非常出色的地方。
正文
背景
MongoDB 数据库确实好用,但是也要依托一定的生态环境,其中就包括我们在开发过程中经常会用到的工具集。在连接 MongoDB 时,我们不可能自己单独去开发基础的功能接口,比如添加记录、删除记录、更新记录等。我们可以使用非常好用的第三方中间件来完成这样的工作,避免重复造轮子,毕竟自己造的轮子还不一定好使。今天我们就来介绍一个非常优秀的 MongoDB 数据库中间件 —— mgm 。
mgm介绍
mgm 的全称是 Mongo Go Models,是一款基于官方 Mongo Golang 驱动程序开发的快速简单的 MongoDB 中间件。使用 mgm 可以快速集成 MongoDB 的 CRUD 接口,大大减少了开发的工作量。
mgm基础特性
-
可以在进行增删改查的时候,设置不同类型的回调通知方法,包括操作前和操作后。
-
让使用 Golang 语言查询和添加数据库的时候更加简单。
-
只需设置一次配置,就可以在任何需要的地方获取集合。
-
可以预定义所有 Mongo 的值和键,不需要自己硬编码它们。
-
集成了官方的 Mongo Golang 驱动程序。
软件要求
-
Golang 1.10 及以上版本。
-
MongoDB 2.6 及以上版本。
安装方式
安装 mgm 也非常简单,可以使用如下命令:
go get github.com/kamva/mgm/v3
但是,需要注意点是,从 mgm 的3.1.0版本开始,仓库命名发生了变化,由原来的github.com/Kamva/mgm/v3
变成了github.com/kamva/mgm/v3
,其实,就是大小写的变化。
代码实例
接下来,通过一段代码来了解一下 mgm 工具的具体使用方式,实例代码如下:
import (
"github.com/kamva/mgm/v3"
"go.mongodb.org/mongo-driver/mongo/options"
)
func init() {
// 设置 mgm 的默认配置
err := mgm.SetDefaultConfig(nil, "mgm_lab", options.Client().ApplyURI("mongodb://root:12345@localhost:27017"))
}
上述代码就完成了 mgm 相关的初始化工作,之后就可以使用 mgm 的 API 接口了。
步骤一、导入mgm
导入 mgm 工具包,设置默认配置项,代码参考如下:
import (
"github.com/kamva/mgm/v3"
"go.mongodb.org/mongo-driver/mongo/options"
)
func init() {
err := mgm.SetDefaultConfig(nil, "mgm_test", options.Client().ApplyURI("mongodb://root:12345@localhost:27017"))
}
步骤二、创建数据库模型
创建一个人的数据库模型,包括名字name、年龄age,这个过程也非常简单,只需要简单的声明,就能够被数据库识别。代码参考如下:
type Person struct {
// DefaultModel adds _id, created_at and updated_at fields to the Model
mgm.DefaultModel `bson:",inline"`
Name string `json:"name" bson:"name"`
Age int `json:"age" bson:"age"`
}
func NewPerson(name string, age int) *Person {
return &Person{
Name: name,
Age: age,
}
}
步骤三、增删改查操作
增加记录
我们插入一条数据库记录,用户名字是 liuzhen007,年龄是 30,代码参考如下:
// 创建一条记录
person := NewPerson("liuzhen007", 30)
// 写入数据库
err := mgm.Coll(person).Create(person)
if err != nil {
fmt.Println("数据库插入失败", err)
}
查找记录
我们查找名字为 liuzhen007 的用户记录,代码参考如下:
// 获取数据库集合
person := &Person{}
coll := mgm.Coll(person)
// 查找名字为 liuzhen007 的记录
_ = coll.First(bson.M{"name": "liuzhen007"}, person)
除此之外,还有两种查询方式,比如根据具体的ID进行查询,代码参考如下:
_ = coll.FindByID("5e0518aaliuzhen0079410ee3", person)
还有可以直接查询数据库中的第一条记录,代码参考如下:
_ = coll.First(bson.M{}, person)
更新记录
我们把数据库中名字为 liuzhen007 的用户的年龄改为 31,但是,这个更新过程首先要查找到对应的数据库记录,这样就用到了我们上面讲到的查询记录接口。代码参考如下:
// 先找到对应的记录
_ = coll.First(bson.M{"name": "liuzhen007"}, person)
// 然后更新年龄
person.Age = 31
err := mgm.Coll(person).Update(person)
删除记录
现在,我们来删除一条数据库记录,同样在删除前,我们首先要找到这条记录,这是一个非常符合实际开发流程的操作,如果数据库中没有对应的记录,在进行删除和更新操作时,可能会导致很多意想不到的问题,代码代码如下:
// 先找到对应的记录
_ = coll.First(bson.M{"name": "liuzhen007"}, person)
// 然后删除记录
err := mgm.Coll(person).Delete(person)
结尾
好了,今天关于 mgm 处理 MongoDB 数据库增删改查操作的方法就介绍完了,当然 mgm 还有很多更加高级的玩法,欢迎感兴趣的小伙伴实践探索。大家好,我是 liuzhen007,欢迎关注,分享更多服务器和数据库的内容知识。
【绽放吧!数据库】有奖征文火热进行中:https://bbs.huaweicloud.com/blogs/285617
- 点赞
- 收藏
- 关注作者
评论(0)