1. 程式人生 > >Go語言開發中MongoDB數據庫

Go語言開發中MongoDB數據庫

urn import l數據庫 pkg selector 關系 示例 nec UNC

伴隨著移動端的興起,Nosql數據庫以其分布式設計和高性能等特點得到了廣泛的應該用,下面將介紹下Nosql中的mongoDB在Go語言中的應用,在開發前,有必要了解下基礎知識,mongo數據庫,MongoDB在Go語言開發接口文檔
在開發前,導入開發需要用到的類庫
import (
"fmt"
"gopkg.in/mgo.v2"
"gopkg.in/mgo.v2/bson"
"log"
)

在示例中用到的結構有:
type Student struct {
Id_ bson.ObjectId bson:"_id"
Name string bson:"name"
Phone string bson:"phone"
Email string bson:"email"
Sex string bson:"sex"
}

一、數據庫連接
數據庫連接主要用到了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
}
二、插入
插入主要用到了函數 func (c

Collection) Insert(docs ...interface{}) error
下面是我插入的兩條記錄

func InsertToMogo() {
c := ConnecToDB()
stu1 := Student{
Name: "zhangsan",
Phone: "13480989765",
Email: "[email protected]",
Sex: "F",
}
stu2 := Student{
Name: "liss",
Phone: "13980989767",
Email: "[email protected]",
Sex: "M",
}
err := c.Insert(&stu1, &stu2)
if err != nil {
log.Fatal(err)
}
}
通過可視化工具可以看到我插入的數據

{
"_id" : ObjectId("5a66a96306d2a40a8b884049"),
"name" : "zhangsan",
"phone" : "13480989765",
"email" : "[email protected]",
"sex" : "F"
}

{
"_id" : ObjectId("5a66a96306d2a40a8b88404a"),
"name" : "liss",
"phone" : "13980989767",
"email" : "[email protected]",
"sex" : "M"
}
三、查詢
查詢單個主要用到了func (c Collection) Find(query interface{}) Query函數,查詢單個和多個主要用到了One()和Many()函數,條件組合可以查看mongDB數據庫使用。

func GetDataViaSex() {
c := ConnecToDB()
result := Student{}
err := c.Find(bson.M{"sex": "M"}).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)

}
查詢所有形如:c.Find(nil).Many(&results)
另外,方法中也有個根據id來查詢的方法 func (c Collection) FindId(id interface{}) Query,

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)
}
三、更新
更新通過函數
func (c Collection) Update(selector interface{}, update interface{}) error
func (c Collection) UpdateAll(selector interface{}, update interface{}) (info ChangeInfo, err error)
func (c *Collection) UpdateId(id interface{}, update interface{}) error

func UpdateDBViaId() {
//id := bson.ObjectIdHex("5a66a96306d2a40a8b884049")
c := ConnecToDB()
err := c.Update(bson.M{"email": "[email protected]"}, bson.M{"$set": bson.M{"name": "haha", "phone": "37848"}})
if err != nil {
log.Fatal(err)
}
}
四、刪除
刪除對應的方法

func (c Collection) Remove(selector interface{}) error]
func (c
Collection) RemoveAll(selector interface{}) (info ChangeInfo, err error)
func (c
Collection) RemoveId(id interface{}) error
func RemoveFromMgo() {
c := ConnecToDB()
_, err := c.RemoveAll(bson.M{"phone": "13480989765"})
if err != nil {
log.Fatal(err)
}
}

寫在最後
介紹了一篇mysql和一篇MongoDB在在Go語言開發中的使用,主要是為了學習下關系型數據庫和NoSql數據庫在開發中的使用。

轉載自:小歪子go
鏈接:https://www.jianshu.com/p/5a1712e6141f
來源:簡書

Go語言開發中MongoDB數據庫