青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Fork me on GitHub
隨筆 - 215  文章 - 13  trackbacks - 0
<2017年7月>
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345


專注即時通訊及網游服務端編程
------------------------------------
Openresty 官方模塊
Openresty 標準模塊(Opm)
Openresty 三方模塊
------------------------------------
本博收藏大部分文章為轉載,并在文章開頭給出了原文出處,如有再轉,敬請保留相關信息,這是大家對原創作者勞動成果的自覺尊重!!如為您帶來不便,請于本博下留言,謝謝配合。

常用鏈接

留言簿(1)

隨筆分類

隨筆檔案

相冊

Awesome

Blog

Book

GitHub

Link

搜索

  •  

積分與排名

  • 積分 - 219730
  • 排名 - 117

最新評論

閱讀排行榜

golang中使用mongodb的操作類以及如何封裝

mgo簡介


mongodb官方沒有關于go的mongodb的驅動,因此只能使用第三方驅動,mgo就是使用最多的一種。
mgo(音mango)是MongoDB的Go語言驅動,它用基于Go語法的簡單API實現了豐富的特性,并經過良好測試。

官網:http://labix.org/mgo

文檔:http://godoc.org/gopkg.in/mgo.v2

安裝與使用


安裝

go get gopkg.in/mgo.v2

go中使用

package main

import (
    "gopkg.in/mgo.v2"
    "gopkg.in/mgo.v2/bson"
)

type Person struct {
    Id    bson.ObjectId `bson:"_id"`
    Name  string        `bson:"tname"` //bson:"name" 表示mongodb數據庫中對應的字段名稱
    Phone string        `bson:"tphone"`
}

const URL = "192.168.1.43:50000" //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()
}
//公共方法,獲取collection對象
func witchCollection(collection string, s func(*mgo.Collection) error) error {
    session := getSession()
    defer session.Close()
    c := session.DB(dataBase).C(collection)
    return s(c)
}

/**
 * 添加person對象
 */
func AddPerson(p Person) string {
    p.Id = bson.NewObjectId()
    query := func(c *mgo.Collection) error {
        return c.Insert(p)
    }
    err := witchCollection("person", query)
    if err != nil {
        return "false"
    }
    return p.Id.Hex()
}

/**
 * 獲取一條記錄通過objectid
 */
func GetPersonById(id string) *Person {
    objid := bson.ObjectIdHex(id)
    person := new(Person)
    query := func(c *mgo.Collection) error {
        return c.FindId(objid).One(&person)
    }
    witchCollection("person", query)
    return person
}

//獲取所有的person數據
func PagePerson() []Person {
    var persons []Person
    query := func(c *mgo.Collection) error {
        return c.Find(nil).All(&persons)
    }
    err := witchCollection("person", query)
    if err != nil {
        return persons
    }
    return persons
}

//更新person數據
func UpdatePerson(query bson.M, change bson.M) string {
    exop := func(c *mgo.Collection) error {
        return c.Update(query, change)
    }
    err := witchCollection("person", exop)
    if err != nil {
        return "true"
    }
    return "false"
}

/**
 * 執行查詢,此方法可拆分做為公共方法
 * [SearchPerson description]
 * @param {[type]} collectionName string [description]
 * @param {[type]} query          bson.M [description]
 * @param {[type]} sort           bson.M [description]
 * @param {[type]} fields         bson.M [description]
 * @param {[type]} skip           int    [description]
 * @param {[type]} limit          int)   (results      []interface{}, err error [description]
 */
func SearchPerson(collectionName string, query bson.M, sort string, fields bson.M, skip int, limit int) (results []interface{}, err error) {
    exop := func(c *mgo.Collection) error {
        return c.Find(query).Sort(sort).Select(fields).Skip(skip).Limit(limit).All(&results)
    }
    err = witchCollection(collectionName, exop)
    return
}

解釋說明


連接字符串

連接字符串可以使用mongodb標準形式


mongodb://myuser:mypass@localhost:40001,otherhost:40001/mydb

結構體聲明

type Person struct {
    Id_   bson.ObjectId `bson:"_id"`
    Name  string        `bson:"tname"` //bson:"name" 表示mongodb數據庫中對應的字段名稱
    Phone string        `bson:"tphone"`
}

注意Person的字段首字母大寫,不然不可見。通過bson:”name”這種方式可以定義MongoDB中集合的字段名,如果不定義,mgo自動把struct的字段名首字母小寫作為集合的字段名。如果不需要獲得id_,Id_可以不定義,在插入的時候會自動生成。但是建議是通過程序生成,這樣可以提高mongodb的運行效率,也可以在插入完成之后直接返回ObjectId,供其他程序使用

手動創建一個ObjecitId

bson.NewObjectId()//創建一個objectid

更多請訪問 紅象UED



個人聯系方式以及開源項目地址
github:https://github.com/zuoyanart/
個人主頁: http://www.zuoyan.space/
posted on 2017-04-19 10:39 思月行云 閱讀(1023) 評論(0)  編輯 收藏 引用 所屬分類: GolangRedis\Mongo
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美精品123区| 在线亚洲一区观看| 亚洲一区二区免费视频| 久久久欧美一区二区| 亚洲国产精品嫩草影院| 国产精品一区=区| 欧美日韩大片| 欧美日韩 国产精品| 欧美成人午夜免费视在线看片 | 久久亚洲综合| 久久人人爽国产| 美女999久久久精品视频| 欧美在线日韩在线| 欧美sm重口味系列视频在线观看| 一区二区三区高清不卡| 一区二区三区高清视频在线观看| 亚洲人永久免费| 一区二区三区毛片| 欧美在线视频导航| 最新日韩av| 亚洲午夜精品17c| 久久久久久网| 国产精品视频久久久| 国产亚洲精品bv在线观看| 欧美日本久久| 国产精品一区久久久| 亚洲大胆视频| 久久国产精品亚洲77777| 最新亚洲一区| 免费看av成人| 亚洲第一视频| 狂野欧美激情性xxxx| 中文精品视频| 欧美四级在线观看| 亚洲精品欧洲精品| 免费永久网站黄欧美| 欧美在线免费视频| 国产精品区一区二区三区| 亚洲三级视频| 亚洲国产精品福利| 久久亚洲综合色| 尤物yw午夜国产精品视频| 欧美在线播放视频| 亚洲欧美在线网| 国产亚洲女人久久久久毛片| 欧美激情区在线播放| 久久综合影音| 一区二区日韩精品| 亚洲一区二区三区乱码aⅴ蜜桃女| 欧美电影免费观看高清| 一本久久综合亚洲鲁鲁| 日韩视频一区二区在线观看 | 99ri日韩精品视频| 欧美视频一区二区三区…| 午夜精品影院| 久久久美女艺术照精彩视频福利播放| 国内视频一区| 国产日产亚洲精品| 久久久www成人免费毛片麻豆| 久久成人国产精品| 亚洲黄色在线观看| 午夜免费电影一区在线观看| 国产午夜精品视频| 亚洲第一在线视频| 国产精品播放| 麻豆精品视频在线| 欧美视频一区二区三区在线观看| 欧美一区二区三区久久精品| 老鸭窝毛片一区二区三区| 亚洲综合成人婷婷小说| 久久久午夜电影| 亚洲男同1069视频| 免费日韩成人| 美女精品在线| 在线日韩中文字幕| 久久成人免费日本黄色| 亚洲欧美一区二区精品久久久| 久久久久久久久蜜桃| 久久精品亚洲一区二区三区浴池| 国产精品第2页| 亚洲一区www| 欧美一区二区精品久久911| 国产精品国产三级国产a| 亚洲国内自拍| 中日韩美女免费视频网址在线观看| 久久久久青草大香线综合精品| 久久精品国产欧美激情| 国产亚洲毛片| 欧美激情在线有限公司| 亚洲精品一区二区三区樱花| 亚洲免费观看高清完整版在线观看熊| 久久爱91午夜羞羞| 欧美国产另类| 一区二区三区精品国产| 免费人成精品欧美精品| 亚洲精品国产视频| 国产精品露脸自拍| 麻豆亚洲精品| 中文在线资源观看网站视频免费不卡 | 亚洲欧美成人综合| 免费成人av| 欧美在现视频| 亚洲伊人网站| 亚洲区欧美区| 在线免费观看一区二区三区| 欧美日韩在线视频一区二区| 欧美亚洲系列| 一区二区av| 欧美中文在线观看| 亚洲日韩成人| 国内精品久久久久国产盗摄免费观看完整版| 亚洲国产日本| 国产精品久久久久久模特| 欧美1级日本1级| 国产精品裸体一区二区三区| 亚洲大胆美女视频| 久久免费99精品久久久久久| 国产精品老牛| 亚洲青涩在线| 亚洲动漫精品| 欧美精品成人91久久久久久久| 久久久99国产精品免费| 亚洲欧洲精品天堂一级 | 国产日本亚洲高清| 欧美日韩综合在线| 99综合在线| 亚洲乱码视频| 99成人在线| 亚洲自拍三区| 久久aⅴ乱码一区二区三区| 欧美成人免费大片| 久久久国产亚洲精品| 久久激五月天综合精品| 久久精品综合网| 久久夜色精品国产噜噜av| 欧美不卡视频一区发布| 亚洲国产欧美在线| 性xx色xx综合久久久xx| 久久一区二区精品| 国产精品福利久久久| 国产精品主播| 日韩视频免费在线| 久久久噜噜噜久噜久久| 欧美成人中文| 久久大香伊蕉在人线观看热2| 麻豆国产va免费精品高清在线| 欧美激情国产精品| 亚洲欧洲日本mm| 久久久久久高潮国产精品视| 亚洲精品视频二区| 免费国产一区二区| 揄拍成人国产精品视频| 午夜精品一区二区三区在线播放| 欧美韩国在线| 欧美电影免费观看网站| 国产专区欧美专区| 久久久午夜精品| 午夜精品久久久久久99热| 国产精品sss| 亚洲欧美韩国| 亚洲性图久久| 国产综合色一区二区三区| 久久精品男女| 乱码第一页成人| 9久草视频在线视频精品| 亚洲精品免费一二三区| 欧美日韩免费高清| 美日韩免费视频| 亚洲国产日韩欧美一区二区三区| 久久国产精品一区二区三区四区| 亚洲欧美制服另类日韩| 国产婷婷97碰碰久久人人蜜臀| 久久成人在线| 欧美久久久久| 久久国产精品高清| 美女露胸一区二区三区| 亚洲午夜在线| 久久视频精品在线| 亚洲伊人久久综合| 欧美成人免费大片| 先锋资源久久| 欧美伦理a级免费电影| 欧美一区激情| 欧美激情第二页| 麻豆国产精品一区二区三区| 欧美日韩中国免费专区在线看| 狂野欧美一区| 国产精品一区二区你懂的| 亚洲日本一区二区三区| 国内精品模特av私拍在线观看 | 国产精品分类| 欧美激情亚洲精品| 国产日韩欧美高清| 亚洲自拍16p| 欧美亚洲在线视频| 国产精品久久久999| 在线亚洲伦理| 欧美在线免费播放| 国产欧美日韩亚洲精品| 99综合在线|