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

Fork me on GitHub
隨筆 - 215  文章 - 13  trackbacks - 0
<2017年4月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456


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

常用鏈接

留言簿(1)

隨筆分類

隨筆檔案

相冊

Awesome

Blog

Book

GitHub

Link

搜索

  •  

積分與排名

  • 積分 - 219731
  • 排名 - 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"
}

/**
 * 執(zhí)行查詢,此方法可拆分做為公共方法
 * [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,供其他程序使用

手動創(chuàng)建一個ObjecitId

bson.NewObjectId()//創(chuàng)建一個objectid

更多請訪問 紅象UED



個人聯(lián)系方式以及開源項目地址
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>
            亚洲一二三四久久| 日韩一区二区精品视频| 欧美日韩999| 国产精品久久久久久久久久妞妞| 欧美日韩精品一区二区三区四区 | 午夜精品福利一区二区蜜股av| 久久精品一级爱片| 亚洲区国产区| 欧美亚洲视频| 欧美日韩成人激情| 一本色道久久88亚洲综合88| 久久av二区| 亚洲精品乱码久久久久久蜜桃91| 西瓜成人精品人成网站| 欧美日韩国产小视频在线观看| 国产精品久久久| 一区二区电影免费观看| 美女91精品| 亚洲女女做受ⅹxx高潮| 欧美日韩国产成人在线| 亚洲第一精品久久忘忧草社区| 9色精品在线| 亚洲国产高清aⅴ视频| 欧美一区二区三区免费观看视频| 欧美视频手机在线| 日韩午夜免费视频| 欧美一区二区三区久久精品| 亚洲自拍偷拍麻豆| 国产精品激情av在线播放| 99riav久久精品riav| 欧美成人久久| 久久久久久伊人| 亚洲裸体俱乐部裸体舞表演av| 欧美sm视频| 麻豆精品精华液| 一区二区三区在线观看国产| 亚洲综合日韩在线| 亚洲免费在线观看视频| 欧美日韩亚洲免费| 夜夜精品视频| 亚洲手机视频| 国产手机视频一区二区| 亚洲一区二区视频在线| 亚洲黄色在线看| 欧美日本簧片| 亚洲永久精品国产| 亚洲一线二线三线久久久| 欧美大片第1页| 夜夜狂射影院欧美极品| 日韩视频一区二区三区在线播放免费观看| 欧美激情按摩在线| 亚洲深夜福利在线| 亚洲一区影音先锋| 亚洲天堂av在线免费观看| 亚洲一卡二卡三卡四卡五卡| 狠狠色丁香久久婷婷综合丁香| 玖玖国产精品视频| 欧美国产精品久久| 久久se精品一区精品二区| 欧美精品999| 老司机免费视频一区二区三区| 欧美日韩日本视频| 裸体歌舞表演一区二区| 国产精品h在线观看| 欧美成人第一页| 国产欧美婷婷中文| 99av国产精品欲麻豆| 伊人夜夜躁av伊人久久| 亚洲一区二区三区四区五区黄| 亚洲国产精品热久久| 午夜精品av| 亚洲男人影院| 欧美剧在线免费观看网站| 老司机精品福利视频| 国产精品理论片在线观看| 亚洲国产欧美国产综合一区| 国内久久婷婷综合| 午夜精品久久久久久久99樱桃| 一区二区久久久久久| 久久免费视频这里只有精品| 久久成人综合视频| 国产精品视频一区二区三区| 亚洲精品中文字幕女同| 亚洲激情电影在线| 久久一区中文字幕| 免费看亚洲片| 樱桃成人精品视频在线播放| 欧美亚洲免费电影| 性欧美xxxx大乳国产app| 国产精品高潮呻吟视频| 夜夜嗨av一区二区三区免费区| 亚洲毛片播放| 欧美乱大交xxxxx| 亚洲精品欧美| 亚洲综合成人婷婷小说| 国产精品日韩在线一区| 亚洲自拍16p| 久久久久久久高潮| 一区二区三区在线视频免费观看| 久久激情视频免费观看| 麻豆国产精品777777在线| 日韩亚洲一区二区| 一本一道久久综合狠狠老精东影业 | 亚洲一区视频在线观看视频| 亚洲深夜福利在线| 国产精品久久久久久久久免费樱桃| 亚洲全黄一级网站| 一区二区三区国产在线观看| 欧美精品一区在线| 一本久久a久久免费精品不卡| 亚洲午夜激情在线| 国产女人精品视频| 久久久夜色精品亚洲| 伊人久久婷婷色综合98网| 蜜桃伊人久久| 99re热这里只有精品视频| 亚洲伊人伊色伊影伊综合网 | 亚洲国产国产亚洲一二三| 欧美激情精品久久久久久黑人| 亚洲精品乱码久久久久久久久| 亚洲综合不卡| 激情久久久久久久| 欧美日本在线| 欧美一区二视频| 亚洲国产美国国产综合一区二区| 亚洲一区二三| 在线观看视频一区| 欧美日韩亚洲精品内裤| 久久本道综合色狠狠五月| 亚洲二区在线观看| 午夜久久黄色| 99re6热只有精品免费观看| 国产无一区二区| 欧美精品一区二区三区一线天视频 | 国产午夜亚洲精品理论片色戒| 久久躁狠狠躁夜夜爽| 亚洲三级免费电影| 久久国产精品久久久久久电车| 亚洲国产成人精品久久| 国产精品久久久久久av福利软件| 久久精品女人| 在线综合欧美| 欧美黄色一区| 久久久人人人| 亚洲欧美日本日韩| 亚洲精品韩国| 在线成人激情黄色| 国产精品揄拍500视频| 欧美精品三区| 蜜月aⅴ免费一区二区三区| 亚洲男女自偷自拍图片另类| 亚洲国产日韩在线| 久久亚洲一区二区三区四区| 亚洲图色在线| 一本色道久久综合| 亚洲国产一区视频| 影音先锋久久资源网| 亚洲欧美电影院| 午夜一区二区三视频在线观看| 亚洲国产导航| 精品动漫3d一区二区三区免费| 国产精品你懂的| 欧美日精品一区视频| 欧美激情视频在线免费观看 欧美视频免费一| 国产一区二区久久久| 亚洲一区国产| 久久裸体视频| 亚洲综合欧美| 日韩午夜高潮| 91久久精品日日躁夜夜躁欧美| 久久综合五月| 久久免费视频网| 久久天堂成人| 久热精品视频在线| 久久午夜视频| 久久夜色精品国产欧美乱极品 | 欧美搞黄网站| 欧美成人自拍| 欧美刺激性大交免费视频| 久久久在线视频| 久久久精品一区| 久久午夜电影| 欧美成人在线免费视频| 欧美黄在线观看| 欧美激情一区三区| 亚洲国产精品一区| 91久久夜色精品国产九色| 亚洲国产婷婷| 亚洲精品免费一区二区三区| 欧美成人情趣视频| 亚洲国产一成人久久精品| 亚洲激情在线观看视频免费| 亚洲国产欧美一区二区三区丁香婷| 欧美激情区在线播放| 亚洲福利视频二区| 亚洲精品午夜| 亚洲欧美在线x视频| 久久精品视频免费| 欧美mv日韩mv亚洲| 欧美私人啪啪vps|