使用:gopkg.in/mgo.v2git
獲取包:go get gopkg.in/mgo.v2 引入:import "gopkg.in/mgo.v2"
mgo簡介github
數據庫名:mydb_tutorial
集合名: t_student數據庫
數據集合:t_student字段說明session
字段 | 類型 | 說明 |
---|---|---|
name | string | 姓名 |
age | int | 年齡 |
sid | string | 學號 |
status | int | 狀態:1正常,9,刪除 |
type Student struct { Name string `bson: "name"` Age int `bson: "age"` Sid string `bson: "sid"` Status int `bson: "status"` } type Per struct { Per []Student }
func Dial(url string) (*Session, error) 官方簡介:Dial establishes a new session to the cluster identified by the given seed server(s).
mongo, err := mgo.Dial("127.0.0.1") // 創建鏈接 defer mongo.Close() if err != nil { return false } client := mongo.DB("mydb_tutorial").C("t_student") //選擇數據庫和集合 //建立數據 data := Student{ Name: "seeta", Age: 18, Sid: "s20180907", Status: 1, } //插入數據 cErr := client.Insert(&data) if cErr != nil { return false } return true
執行該段程序,MongoDB會出現一條記錄:app
在3.2插入數據的基礎上,咱們再插入一條數據:
data := Student{ Name: "seeta1", Age: 18, Sid: "s20180908", Status: 1, }
mongo, err := mgo.Dial("192.168.0.91") defer mongo.Close() if err != nil { return false } client := mongo.DB("mydb_tutorial").C("t_student") user := Student{} //查找sid爲 s20180907 cErr := client.Find(bson.M{"sid": "s20180907"}).One(&user) if cErr != nil { return false } fmt.Println(user) return true
執行該段程序,會打印查找到的結果:數據庫設計
{seeta 17 s20180907 1}
查找status爲1的數據ide
mongo, err := mgo.Dial("192.168.0.91") defer mongo.Close() if err != nil { return false } client := mongo.DB("mydb_tutorial").C("t_student") //每次最多輸出15條數據 iter := client.Find(bson.M{"status": 1}).Sort("_id").Skip(1).Limit(15).Iter() var stu Student var users Per for iter.Next(&stu) { users.Per = append(users.Per, stu) } if err := iter.Close(); err != nil { return false } fmt.Println(users) return true
執行該段程序,會打印查找到的結果:url
{[{seeta1 18 s20180908 1} {seeta 18 s20180907 1}]}
更新數據前:
spa
mongo, err := mgo.Dial("192.168.0.91") defer mongo.Close() if err != nil { return false } client := mongo.DB("mydb_tutorial").C("t_student") //只更新一條 cErr := client.Update(bson.M{"status": 1}, bson.M{"$set": bson.M{"age": 20}}) if cErr != nil { return false } return true }
執行命令後:設計
只更新了一條數據的年齡
若是咱們想把全部status爲1的學生年齡都更新爲20.
用client.UpdateAll 替換client.Update 就能夠了
刪除數據:sid爲s20180907
mongo, err := mgo.Dial("192.168.0.91") defer mongo.Close() if err != nil { return false } client := mongo.DB("mydb_tutorial").C("t_student") //只更新一條 cErr := client.Remove(bson.M{"sid": "s20180907"}) if cErr != nil { return false } return true
若是數據庫設計的時候,有兩個sid爲s20180907 只會刪除一條記錄。
若是刪除全部:用client.RemoveAll 替換client.Remove