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

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>
            欧美色精品天天在线观看视频| 亚洲美洲欧洲综合国产一区| 性高湖久久久久久久久| 国产精品日韩欧美综合| 欧美在线视频一区二区| 亚洲欧美怡红院| 一区二区三区亚洲| 亚洲高清自拍| 欧美成人精品在线播放| 亚洲午夜高清视频| 欧美中文字幕精品| 亚洲精品欧洲精品| 亚洲一区区二区| 18成人免费观看视频| 亚洲欧洲精品成人久久奇米网| 欧美精品在线一区二区| 欧美一级免费视频| 欧美岛国在线观看| 欧美一级视频免费在线观看| 久久久国产精品一区二区三区| 亚洲日韩欧美视频| 欧美一级艳片视频免费观看| 亚洲国产精品小视频| 亚洲天堂av电影| 亚洲高清视频的网址| 在线视频欧美一区| 亚洲高清视频一区| 午夜一级久久| 亚洲一区二区三区四区五区午夜| 久久久精品一区二区三区| 亚洲午夜视频在线观看| 午夜宅男久久久| 欧美成人精品影院| 麻豆成人在线播放| 国产精品久久久久久五月尺| 欧美成人性网| 国内偷自视频区视频综合| 亚洲久色影视| 亚洲精品欧美日韩专区| 久久免费黄色| 久久久精品日韩欧美| 欧美性色视频在线| 亚洲精品社区| 亚洲精品欧美日韩| 蜜臀av国产精品久久久久| 久久激情综合网| 国产精品主播| 亚洲主播在线| 亚洲综合清纯丝袜自拍| 欧美三级欧美一级| 99国产麻豆精品| 一本色道久久综合亚洲精品按摩| 美女亚洲精品| 欧美国产综合| 亚洲精品日韩激情在线电影| 噜噜噜91成人网| 欧美成人有码| 亚洲人体大胆视频| 欧美岛国在线观看| 亚洲精品视频在线观看网站| 亚洲精品一二三| 欧美激情一区二区在线| 亚洲欧洲一区二区在线播放| 亚洲日本免费电影| 欧美高清免费| 9久re热视频在线精品| 亚洲天堂av图片| 国产精品欧美在线| 午夜老司机精品| 久久综合色影院| 亚洲精品国产系列| 欧美日韩国产三级| 亚洲午夜久久久| 久久久久久久激情视频| 精品999成人| 欧美成人一区二区| 一区二区三区毛片| 久久久91精品国产| 在线日韩av| 欧美日韩 国产精品| 亚洲图片在线观看| 美女日韩在线中文字幕| 亚洲毛片网站| 国产精品福利在线| 久久经典综合| 亚洲精品午夜| 久久国产一二区| 亚洲精品日韩综合观看成人91| 欧美激情精品久久久久| 亚洲一区二区三区久久| 麻豆freexxxx性91精品| 亚洲视频综合| 红桃视频欧美| 欧美日韩在线免费| 久久www成人_看片免费不卡| 欧美激情第1页| 亚洲欧美日韩精品一区二区| 精品福利电影| 国产精品视频yy9099| 蜜臀av在线播放一区二区三区| 99www免费人成精品| 久久野战av| 亚洲男人第一网站| 欧美在线观看一区二区三区| 亚洲一区二区三区在线观看视频| 久久久青草青青国产亚洲免观| 亚洲美女精品成人在线视频| 国产欧美日韩综合一区在线观看 | 亚洲第一色在线| 亚欧成人在线| 一区二区三区福利| 一区视频在线| 国产热re99久久6国产精品| 欧美黑人国产人伦爽爽爽| 欧美在线高清视频| 亚洲午夜激情免费视频| 亚洲国产精品久久久久久女王| 性欧美精品高清| 一区二区三区精品在线| 亚洲国产精品久久久久久女王| 国产精品视频免费观看www| 欧美人妖在线观看| 欧美成人亚洲成人日韩成人| 久久久精品一区二区三区| 亚洲欧美日韩在线观看a三区| 亚洲精品三级| 亚洲日本中文字幕区| 亚洲第一综合天堂另类专| 久久在线视频在线| 久久精品人人做人人综合| 亚洲欧美在线aaa| 亚洲网在线观看| 一本一本久久a久久精品牛牛影视| 亚洲高清视频的网址| 在线观看三级视频欧美| 国内精品美女在线观看| 国产一区999| 国产一区二区在线免费观看 | 国产欧美日韩激情| 国产精品一区二区三区观看| 欧美视频网站| 国产精品xxx在线观看www| 欧美视频中文一区二区三区在线观看| 欧美精品三级日韩久久| 欧美日韩综合一区| 欧美日韩一区自拍| 夜夜爽99久久国产综合精品女不卡| 激情成人亚洲| 亚洲国产精品欧美一二99| 亚洲国产日韩精品| 99re66热这里只有精品4| 夜久久久久久| 亚洲免费在线电影| 久久精品国产亚洲aⅴ| 久久夜色精品一区| 欧美韩日一区二区三区| 亚洲国产mv| 日韩午夜在线电影| 午夜精品区一区二区三| 久久久久成人精品| 欧美1区2区视频| 欧美色中文字幕| 国产一级精品aaaaa看| 精品盗摄一区二区三区| 亚洲三级视频在线观看| 亚洲午夜久久久| 久久这里只有| 亚洲精品久久久久久久久久久久| 一区二区三区产品免费精品久久75 | 国产精品中文在线| 久久精品最新地址| 欧美高清视频www夜色资源网| 欧美揉bbbbb揉bbbbb| 国产欧美日韩视频在线观看| 国产一区二区三区在线观看免费| 最新69国产成人精品视频免费| 99香蕉国产精品偷在线观看| 欧美一级视频精品观看| 亚洲第一中文字幕在线观看| 亚洲一区免费网站| 欧美精品免费视频| 国产综合在线看| 在线视频中文亚洲| 老司机精品久久| 中文国产一区| 欧美成人精品不卡视频在线观看| 国产精品成人v| 亚洲欧洲中文日韩久久av乱码| 亚洲欧美日韩网| 亚洲欧洲免费视频| 久久精品国产精品亚洲综合| 欧美视频在线免费| 亚洲人久久久| 欧美va天堂| 欧美一区二区三区在线视频 | 欧美乱人伦中文字幕在线| 国产午夜精品久久久久久免费视| 99精品国产高清一区二区 | 久久精品99| 亚洲视频免费看|