前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >原 Go 的 MogonDB 包 mgo

原 Go 的 MogonDB 包 mgo

作者头像
霡霂
发布2018-06-04 16:14:48
1.6K0
发布2018-06-04 16:14:48
举报
文章被收录于专栏:雨过天晴雨过天晴

gopkg.in/mgo.v2 库是go语言里对应着MogonDB的库,好似这个推荐的人很多,比go对mysql的库统一多了

一、连接数据库

代码语言:javascript
复制
// 注意包的引用
const URL = "" //mongodb连接字符串

var (
	mgoSession *mgo.Session
	dataBase   = "mydb"
)

/**
 * 公共方法,获取session,如果存在则拷贝一份
 */
func getSession() *mgo.Session {
	if mgoSession == nil {
		var err error
		mgoSession, err = mgo.Dial(URL)
		if err != nil {
			panic(err) //直接终止程序运行
		}
	}
	//最大连接池默认为4096
	return mgoSession.Clone()
}

二、连接操作的数据库和文档(类同于mysql里面的库和表)

代码语言:javascript
复制
	session := getSession()
	defer session.Close()
        // DB连接库,C连接文档
	c := session.DB(dataBase).C(collection)

三、数据库操作

数据库操作一般基于一个符合bson的对象

代码语言:javascript
复制
type Ts struct {
        // omitempty 是为了更新的时候不传这个参数时是忽略而不是直接替换为空
	Id                bson.ObjectId `bson:"_id,omitempty"`
	UUID string `bson:"uuid"`
	UserName string `bson:"username,omitempty"`
	Time int `bson:"time,omitempty"`
}

类似于json转换时的 omitempty 为空时忽略本字段

三、1. 增
代码语言:javascript
复制
	session := getSession()
	defer session.Close()
        // DB连接库,C连接文档
	c := session.DB(dataBase).C(collection)
        // 建立插入对象
        var ts = model.Ts{
		UUID:"23",
		//UserName:"dingdayu",
		Time:123456,
	}
        c.Insert(ts)
三、2. 存在更新否则新增
代码语言:javascript
复制
	session := getSession()
	defer session.Close()
        // DB连接库,C连接文档
	c := session.DB(dataBase).C(collection)
        // 建立插入对象
        var ts = model.Ts{
		UUID:"23",
		//UserName:"dingdayu",
		Time:123456,
	}
        c.Upsert(bson.M{"uuid": p.UUID}, bson.M{"$set":ts})

这里特别注意 "$set" 修改器,详见MogonDB文档

三、3. 删除记录中的一个元素
代码语言:javascript
复制
// 省略了建立表操作对象的步骤,自己补上
c.Update(bson.M{"_id": bson.ObjectIdHex("5204af979955496907000001")}, bson.M{"$pull": bson.M{ "username": "Golang", }})

这里特别注意 "$pull" 修改器,同上

| 修改器 | 含义 | | $set | 修改字段的值 | | $inc | 字段运算 | | $push | 增加字段 | | $pull |删除字段 |

三、4. 删除一条记录
代码语言:javascript
复制
c.Remove(bson.M{"username": "dingdayu"})

bson.M 为删除条件,同下面的查询条件

三、5. 查询
  • 查找所有记录
代码语言:javascript
复制
var users []User
c.Find(nil).All(&users) 
fmt.Println(users)
  • 根据id查找一条

c.FindId(objectId).One(&user)

  • 条件查询
代码语言:javascript
复制
c.Find(bson.M{"username": bson.M{"$ne": "dingdayu"}}).All(&users)

特别注意 "$ne" 为条件

| 条件 | 含义 | | $ne | != 不等 | | $gt| > 大于 | | $lt | < 小于 | | $gte |>= 大于等于 | | $lte | <= 小于等于 | | $in | in in查询 |

  • and
代码语言:javascript
复制
c.Find(bson.M{"username": "dingdayu", "Time": 123433}).All(&users)
  • or
代码语言:javascript
复制
c.Find(bson.M{"$or": []bson.M{bson.M{"username": "dingdayu"}, bson.M{"Time": 12323}}}).All(&users)
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、连接数据库
  • 二、连接操作的数据库和文档(类同于mysql里面的库和表)
  • 三、数据库操作
    • 三、1. 增
      • 三、2. 存在更新否则新增
        • 三、3. 删除记录中的一个元素
          • 三、4. 删除一条记录
            • 三、5. 查询
            相关产品与服务
            云数据库 SQL Server
            腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档