知识点 go操做mongodb

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"}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 (c *Collection) Insert(docs ...interface{}) error下面是我插入的两条记录func InsertToMogo() {    c := ConnecToDB()    stu1 := Student{        Name:  "zhangsan",        Phone: "13480989765",        Email: "329832984@qq.com",        Sex:   "F",    }    stu2 := Student{        Name:  "liss",        Phone: "13980989767",        Email: "12832984@qq.com",        Sex:   "M",    }    err := c.Insert(&stu1, &stu2)    if err != nil {        log.Fatal(err)    }}经过可视化工具能够看到我插入的数据{    "_id" : ObjectId("5a66a96306d2a40a8b884049"),    "name" : "zhangsan",    "phone" : "13480989765",    "email" : "329832984@qq.com",    "sex" : "F"}{    "_id" : ObjectId("5a66a96306d2a40a8b88404a"),    "name" : "liss",    "phone" : "13980989767",    "email" : "12832984@qq.com",    "sex" : "M"}3、查询查询单个主要用到了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)}3、更新更新经过函数*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{}) errorfunc 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)    }}4、删除删除对应的方法func (c *Collection) Remove(selector interface{}) error]func (c *Collection) RemoveAll(selector interface{}) (info *ChangeInfo, err error)func (c *Collection) RemoveId(id interface{}) errorfunc RemoveFromMgo() {    c := ConnecToDB()    _, err := c.RemoveAll(bson.M{"phone": "13480989765"})    if err != nil {        log.Fatal(err)    }}
相关文章
相关标签/搜索