前言
众所周知,MongoDB 是一个通用、基于文档的分布式数据库,非常适合云原生服务的应用场景。上一篇文章已经简单介绍了 MongoDB 数据库的中间件工具 mgm,今天就来聊一聊 mgm 的接口使用方法。
正文
步骤一、导入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,欢迎关注,分享更多服务器和数据库的内容知识。
作者简介:????大家好,我是 Data-Mining(liuzhen007),是一位典型的音视频技术爱好者,前后就职于传统广电巨头和音视频互联网公司,具有丰富的音视频直播和点播相关经验,对 WebRTC、FFmpeg 和 Electron 有非常深入的了解,????公众号:玩转音视频。同时也是 CSDN 博客专家、华为云享专家(共创编辑)、InfoQ 签约作者,欢迎关注我分享更多干货!????