golang mongodb 之 mgo

正为疯狂 · · 79 次点击 · · 开始浏览    

装完mongodb之后,就是为了学习一下 mgo包的使用
贴一下学习的代码

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")
    //插入数据
    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)

    //插入类一种结构文档
    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]}

本文来自:简书

感谢作者:正为疯狂

查看原文:golang mongodb 之 mgo

79 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传