2019-05-16

sujeking · · 876 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

连接mongodb

gopkg.in/mgo.v2

  • 引入包
import (
    "fmt"
    "gopkg.in/mgo.v2"
    "gopkg.in/mgo.v2/bson"
)
  • 定义一个model

注意 _id

type User struct {
    _id   bson.ObjectId `bson:_id`
    Upass string        `bson:upass`
    Type  int           `bson:type`
    Uname string        `bson:uname`
}
  • 连接
session, err := mgo.Dial("localhost:21117")
    if err != nil {
        fmt.Println("连接失败")
        fmt.Println(err)
    } else {
        fmt.Println("连接成功")
    }

session.SetMode(mgo.Monotonic, true)
  • 选择库、表
db := session.DB("chinese_tea") //选择数据库
c := db.C("user") //选择表
  • 添加

db.user.insert({"uname":"golang jkeing"})

    //---------------------------------------
    err = c.Insert(&User{Uname:"golang jeking",_id:bson.NewObjectId()}) //_id必须要有才可以
    if err != nil {
        fmt.Println(err)
    } else {
        fmt.Println("插入成功")
    }

  • 删除

db.user.deleteOne({"uname":"里斯"})

    err = c.Remove(bson.M{"uname": "kkk"})
    if err != nil {
        fmt.Println(err)
    } else {
        fmt.Println("删除成功")
    }
  • 更新

db.user.update({"uname":"golang jeking"},{$set:{"uname":"golang sujeking"}})

err = c.Update(
                bson.M{"uname": "golang jeking"},
                bson.M{"$set":
                    bson.M{"uname": "golang sujeking"}
                })
    if err != nil {
        fmt.Println(err)
    } else {
        fmt.Println("更新成功")
    }
  • 查询/全部

db.user.find({})

    var users []User
    c.Find(nil).All(&users)
    fmt.Println(users)
  • 查询/过略字段

db.user.find({},{"_id":0})

var users []User
c.Find(nil).Select(bson.M{"_id":0}).All(&users)
fmt.Println(users)

混合查询的话 得到的结果集就不能了使用对象了model,但是可以定义一个类型来接收,

type LocalData interface{}

var users []LocalData
c.Find(nil).All(&users)
for _,value := range users { //value 是一个map
  fmt.Println(value);
}

有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:sujeking

查看原文:2019-05-16

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

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