网站建设资讯

NEWS

网站建设资讯

使用golang在mangodb中实现CRUD操作

这篇文章给大家介绍使用golang在mangodb中实现CRUD操作,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

岚县网站建设公司成都创新互联公司,岚县网站设计制作,有大型网站制作公司丰富经验。已为岚县成百上千家提供企业网站建设服务。企业网站搭建\成都外贸网站建设公司要多少钱,请找那个售后服务好的岚县做网站的公司定做!

简述关系型数据库,非关系型数据库

关系型数据库:指采用了关系模型来组织数据的数据库。
关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织

非关系型数据库

非关系型数据库:指非关系型的,分布式的,且一般不保证遵循 ACID 原则的数据存储系统。

这是比较规范的说法,具体这两者谈不上谁优谁劣,各自有各自的使用场景。

其实可以粗暴的理解成一个关系型数据库基本靠使用sql语句来操作,而非关系型数据靠key-value来进行操作

(其实按我的理解非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合,可以是文档或者键值对等,但是我不知道这么说是否正确)

MangoDB

好了,上面简述了一下关系型和非关系型数据库,下面来说一下今天文章的主角。

mangodb

MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。

所以mangodb操作也是通过json(bson)格式来操作

使用golang在mangodb中实现CRUD操作 

那么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操作就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。


新闻名称:使用golang在mangodb中实现CRUD操作
网页URL:http://cdweb.net/article/ppseic.html