MongoDB中间件工具mgm入门介绍丨【绽放吧!数据库】

举报
liuzhen007 发表于 2021/08/19 21:28:16 2021/08/19
【摘要】 前言众所周知,MongoDB 是一个通用、基于文档的分布式数据库,在云原生生态下具有非常强大的适应性,帮助现代应用程序开发人员迎接云时代的到来。就数据库而言,效率是一个永不过时的话题,这一点也是 MongoDB 非常出色的地方。 正文 背景MongoDB 数据库确实好用,但是也要依托一定的生态环境,其中就包括我们在开发过程中经常会用到的工具集。在连接 MongoDB 时,我们不可能自己单独...

前言

众所周知,MongoDB 是一个通用、基于文档的分布式数据库,在云原生生态下具有非常强大的适应性,帮助现代应用程序开发人员迎接云时代的到来。就数据库而言,效率是一个永不过时的话题,这一点也是 MongoDB 非常出色的地方。

正文

背景

MongoDB 数据库确实好用,但是也要依托一定的生态环境,其中就包括我们在开发过程中经常会用到的工具集。在连接 MongoDB 时,我们不可能自己单独去开发基础的功能接口,比如添加记录、删除记录、更新记录等。我们可以使用非常好用的第三方中间件来完成这样的工作,避免重复造轮子,毕竟自己造的轮子还不一定好使。今天我们就来介绍一个非常优秀的 MongoDB 数据库中间件 —— mgm 。

mgm介绍

mgm 的全称是 Mongo Go Models,是一款基于官方 Mongo Golang 驱动程序开发的快速简单的 MongoDB 中间件。使用 mgm 可以快速集成 MongoDB 的 CRUD 接口,大大减少了开发的工作量。

mgm基础特性

  1. 可以在进行增删改查的时候,设置不同类型的回调通知方法,包括操作前和操作后。

  2. 让使用 Golang 语言查询和添加数据库的时候更加简单。

  3. 只需设置一次配置,就可以在任何需要的地方获取集合。

  4. 可以预定义所有 Mongo 的值和键,不需要自己硬编码它们。

  5. 集成了官方的 Mongo Golang 驱动程序。

软件要求

  1. Golang 1.10 及以上版本。

  2. 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

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200