这篇文章给大家介绍使用golang在mangodb中实现CRUD操作,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
简述关系型数据库,非关系型数据库
关系型数据库:指采用了关系模型来组织数据的数据库。
关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织
非关系型数据库
非关系型数据库:指非关系型的,分布式的,且一般不保证遵循 ACID 原则的数据存储系统。
这是比较规范的说法,具体这两者谈不上谁优谁劣,各自有各自的使用场景。
其实可以粗暴的理解成一个关系型数据库基本靠使用sql语句来操作,而非关系型数据靠key-value来进行操作
(其实按我的理解非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合,可以是文档或者键值对等,但是我不知道这么说是否正确)
MangoDB
好了,上面简述了一下关系型和非关系型数据库,下面来说一下今天文章的主角。
mangodb
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
所以mangodb操作也是通过json(bson)格式来操作
那么go语言中是如何来操作mangodb
(1)数据库连接
数据库连接主要用到了mgo中的Dial()函数,连接形式如mgo.Dial(url1,url2,url3),具体代码如下:
func ConnecToDB() *mgo.Collection { session, err := mgo.Dial("127.0.0.1:27017") if err != nil { panic(err) } //defer session.Close() session.SetMode(mgo.Monotonic, true) c := session.DB("medex").C("student") return c }
(2)插入
func InsertToMogo() { c := ConnecToDB() stu1 := Student{ Name: "xiaoming", Phone: "18933333333", Email: "12345678@qq.com", Sex: "man", } stu2 := Student{ Name: "zhangdao", Phone: "8765432", Email: "133333384@qq.com", Sex: "woman", } err := c.Insert(&stu1, &stu2) if err != nil { log.Fatal(err) } }
(3)查询
func GetDataViaSex() { c := ConnecToDB() result := Student{} err := c.Find(bson.M{"sex": "woman"}).One(&result) if err != nil { log.Fatal(err) } fmt.Println("student", result) students := make([]Student, 20) err = c.Find(nil).All(&students) if err != nil { log.Fatal(err) } fmt.Println(students) } func GetDataViaId() { id := bson.ObjectIdHex("5a66a96306d2a40a8b884049") c := ConnecToDB() stu := &Student{} err := c.FindId(id).One(stu) if err != nil { log.Fatal(err) } fmt.Println(stu) }
这上面用了两种查询方法一种是查询多个,返回多个对象:many
另一种是查询单个,返回单个对象:one
(4)更新
func UpdateDBViaId() { //id := bson.ObjectIdHex("5a66a96306d2a40a8b884049") c := ConnecToDB() err := c.Update(bson.M{"email": "12832984@qq.com"}, bson.M{"$set": bson.M{"name": "haha", "phone": "37848"}}) if err != nil { log.Fatal(err) } }
(5)删除
func RemoveFromMgo() { c := ConnecToDB() _, err := c.RemoveAll(bson.M{"phone": "13480989765"}) if err != nil { log.Fatal(err) } }
关于使用golang在mangodb中实现CRUD操作就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。