golang mongodb 之 mgo

裝完mongodb之后,就是為了學(xué)習(xí)一下 mgo包的使用
貼一下學(xué)習(xí)的代碼

package main

import (
    "fmt"
    "gopkg.in/mgo.v2"
    "gopkg.in/mgo.v2/bson"
    "log"
    "time"
)

type Person struct {
    Name  string
    Phone string
}

/*
通過bson:”name”這種方式可以定義MongoDB中集合的字段名,
如果不定義,mgo自動把struct的字段名首字母小寫作為集合的字段名。
如果不需要獲得id_,Id_可以不定義,在插入的時候會自動生成。
*/
type User struct {
    Id_       bson.ObjectId `bson:"_id"`
    Name      string        `bson:"name"`
    Age       int           `bson:"age"`
    JoinedAt  time.Time     `bson:"joined_at"`
    Interests []string      `bson:"interests"`
}

func main() {
    //如果不在本機
    //mongodb://myuser:mypass@localhost:40001,otherhost:40001/mydb
    session, err := mgo.Dial("localhost:27017")
    if err != nil {
        panic(err)
    }
    defer session.Close()

    session.SetMode(mgo.Monotonic, true)
    /*
        其實是分了兩步 1拿db 2拿collection
        db := session.DB("test_db")
        c := db.C("runoob")
    */
    c := session.DB("test_db").C("mytable")
    //插入數(shù)據(jù)
    err = c.Insert(&Person{"A001", "12312312311"}, &Person{"A002", "123123123002"})
    if err != nil {
        log.Fatal(err)
    }
    //查詢
    result := Person{}
    err = c.Find(bson.M{"name": "A001"}).One(&result)
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println("phone = ", result.Phone)

    //插入類一種結(jié)構(gòu)文檔
    err = c.Insert(&User{
        Id_:       bson.NewObjectId(),
        Name:      "Jimmy Kuu",
        Age:       31,
        JoinedAt:  time.Now(),
        Interests: []string{"asd", "gdfg"},
    })
    if err != nil {
        panic(err)
    }
    err = c.Insert(&User{
        Id_:       bson.NewObjectId(),
        Name:      "Tracy Yu",
        Age:       31,
        JoinedAt:  time.Now(),
        Interests: []string{"Shoping", "TV"},
    })

    if err != nil {
        panic(err)
    }
    //查詢所有
    var users []User
    //c.Find(nil).All(&users)
    c.Find(bson.M{"age": 31}).All(&users)
    for _, item := range users {
        fmt.Println(item)
    }
}

運行后打印

phone =  12312312311
{ObjectIdHex("598d3126c3666e1d23000001") Jimmy Kuu 31 2017-08-11 12:23:02.073 +0800 CST [asd gdfg]}
{ObjectIdHex("598d3126c3666e1d23000002") Tracy Yu 31 2017-08-11 12:23:02.074 +0800 CST [Shoping TV]}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容