成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

golang基礎(chǔ)學(xué)習(xí)-MongoDB使用

LinkedME2016 / 3389人閱讀

摘要:如果刪除所有用替換其他寫了一個(gè)和結(jié)合的數(shù)據(jù)查詢服務(wù)細(xì)節(jié)可點(diǎn)擊鏈接到查看

1.系統(tǒng)環(huán)境

Golang:go version go1.10.3 darwin/amd64

OS:MacOS

MongoDB: version: 3.4.4

2.Golang使用MongoDB

使用:gopkg.in/mgo.v2

  獲取包:go get gopkg.in/mgo.v2
  引入:import "gopkg.in/mgo.v2"

mgo簡介

3.簡單使用MongoDB 3.1 數(shù)據(jù)設(shè)計(jì) 3.1.1 數(shù)據(jù)庫設(shè)計(jì):

數(shù)據(jù)庫名:mydb_tutorial
集合名: t_student

數(shù)據(jù)集合:t_student字段說明

字段 類型 說明
name string 姓名
age int 年齡
sid string 學(xué)號(hào)
status int 狀態(tài):1正常,9,刪除
3.1.2結(jié)構(gòu)體設(shè)計(jì):
type Student struct {
    Name   string  `bson: "name"`
    Age    int     `bson: "age"`
    Sid    string  `bson: "sid"`
    Status int     `bson: "status"`
}

type Per struct {
    Per   []Student
}
mgo簡介
func Dial(url string) (*Session, error)

官方簡介:Dial establishes a new session to the cluster identified by the given seed server(s).
3.2 插入數(shù)據(jù)
    mongo, err := mgo.Dial("127.0.0.1") // 建立連接 

    defer mongo.Close()

    if err != nil {
        return false
    }

    client := mongo.DB("mydb_tutorial").C("t_student")  //選擇數(shù)據(jù)庫和集合

    //創(chuàng)建數(shù)據(jù)
    data := Student{
        Name:   "seeta",
        Age:    18,
        Sid:    "s20180907",
        Status: 1,
    }

    //插入數(shù)據(jù)
    cErr := client.Insert(&data)

    if cErr != nil {
        return false
    }
    return true

執(zhí)行該段程序,MongoDB會(huì)出現(xiàn)一條記錄:

3.3 查找數(shù)據(jù)
在3.2插入數(shù)據(jù)的基礎(chǔ)上,我們?cè)俨迦胍粭l數(shù)據(jù):
data := Student{
        Name:   "seeta1",
        Age:    18,
        Sid:    "s20180908",
        Status: 1,
    }
3.3.1 findOne
mongo, err := mgo.Dial("192.168.0.91")

    defer mongo.Close()

    if err != nil {
        return false
    }

    client := mongo.DB("mydb_tutorial").C("t_student")

    user := Student{}
//查找sid為 s20180907
    cErr := client.Find(bson.M{"sid": "s20180907"}).One(&user)

    if cErr != nil {
        return false
    }

    fmt.Println(user)

    return true

執(zhí)行該段程序,會(huì)打印查找到的結(jié)果:

{seeta 17 s20180907 1}
3.3.2 findAll

查找status為1的數(shù)據(jù)

mongo, err := mgo.Dial("192.168.0.91")

    defer mongo.Close()

    if err != nil {
        return false
    }

    client := mongo.DB("mydb_tutorial").C("t_student")

    //每次最多輸出15條數(shù)據(jù)
    iter := client.Find(bson.M{"status": 1}).Sort("_id").Skip(1).Limit(15).Iter()

    var stu Student
    var users Per
    for iter.Next(&stu) {
        users.Per = append(users.Per, stu)
    }

    if err := iter.Close(); err != nil {
        return false
    }
    fmt.Println(users)
    return true

執(zhí)行該段程序,會(huì)打印查找到的結(jié)果:

{[{seeta1 18 s20180908 1} {seeta 18 s20180907 1}]}
3.4 更新數(shù)據(jù)

更新數(shù)據(jù)前:

    mongo, err := mgo.Dial("192.168.0.91")

    defer mongo.Close()

    if err != nil {
        return false
    }

    client := mongo.DB("mydb_tutorial").C("t_student")

    //只更新一條
    cErr := client.Update(bson.M{"status": 1}, bson.M{"$set": bson.M{"age": 20}})
    
    if cErr != nil {

        return false
    }

    return true
}

執(zhí)行命令后:


只更新了一條數(shù)據(jù)的年齡

如果我們想把所有status為1的學(xué)生年齡都更新為20.

用client.UpdateAll 替換client.Update 就可以了
3.5 刪除數(shù)據(jù)

刪除數(shù)據(jù):sid為s20180907

    mongo, err := mgo.Dial("192.168.0.91")

    defer mongo.Close()

    if err != nil {
        return false
    }

    client := mongo.DB("mydb_tutorial").C("t_student")

    //只更新一條
    cErr := client.Remove(bson.M{"sid": "s20180907"})

    if cErr != nil {

        return false
    }

    return true

如果數(shù)據(jù)庫設(shè)計(jì)的時(shí)候,有兩個(gè)sid為s20180907 只會(huì)刪除一條記錄。
如果刪除所有:用client.RemoveAll 替換client.Remove

4. 其他

寫了一個(gè)gin和mgo結(jié)合的數(shù)據(jù)查詢服務(wù)demo,細(xì)節(jié)可點(diǎn)擊鏈接到github查看

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/19377.html

相關(guān)文章

  • 用Go語言借助mgo實(shí)現(xiàn)一個(gè)對(duì)MongoDB進(jìn)行增刪改查的demo

    摘要:準(zhǔn)備數(shù)據(jù)結(jié)構(gòu)這個(gè)以對(duì)一個(gè)簡單的通訊錄進(jìn)行插入查詢更新刪除記錄為例,中包含和兩個(gè)字段下載還沒出官方的驅(qū)動(dòng)包,是現(xiàn)在比較流行的第三方包,能找到的相關(guān)資料也比較多。準(zhǔn)備實(shí)現(xiàn)對(duì)的增刪改查操作,先想了下怎么寫測(cè)試案例。查找,通過查找該條記錄。 環(huán)境聲明:go version go1.11MongoDB server version 4.0.3 背景 這是我第一次接觸golang和MongoDB,...

    Jingbin_ 評(píng)論0 收藏0
  • 初探MongoDB:暴力美學(xué)

    摘要:為了在項(xiàng)目中更好的使用來完成我們的業(yè)務(wù),我們探究了性能暴力的成因以及如何更加合理的使用。的出現(xiàn)能夠快速的完成系統(tǒng)的開發(fā)于拓展需求。不同的業(yè)務(wù)會(huì)導(dǎo)致不同的數(shù)據(jù)庫使用情況。緩存類型根據(jù)情況選擇或高速度也是有代價(jià)的。轉(zhuǎn)自初探暴力美學(xué) AUTH:PHILO version:2.0 showImg(http://7viiaq.com1.z0.glb.clouddn.com/u=14409196...

    yy13818512006 評(píng)論0 收藏0
  • 從零到百億互聯(lián)網(wǎng)金融架構(gòu)發(fā)展史

    摘要:總體介紹在互聯(lián)網(wǎng)金融行業(yè)一百多億其實(shí)也算不上大平臺(tái),也就是二級(jí)陣營吧,其實(shí)每次的架構(gòu)升級(jí)都是隨著業(yè)務(wù)重大推進(jìn)而伴隨的,在前一代系統(tǒng)架構(gòu)上遇到的問題,業(yè)務(wù)開發(fā)過程中積累一些優(yōu)秀的開發(fā)案例,在下一代系統(tǒng)開發(fā)中就會(huì)大力推進(jìn)架構(gòu)升級(jí)。 回想起從公司成立敲出的第一行代碼算起到現(xiàn)在也快三年了,平臺(tái)的技術(shù)架構(gòu),技術(shù)體系也算是經(jīng)歷了四次比較重大的升級(jí)轉(zhuǎn)化(目前第四代架構(gòu)體系正在進(jìn)行中),臨近年底也想抽...

    mrcode 評(píng)論0 收藏0
  • 從零到百億互聯(lián)網(wǎng)金融架構(gòu)發(fā)展史

    摘要:總體介紹在互聯(lián)網(wǎng)金融行業(yè)一百多億其實(shí)也算不上大平臺(tái),也就是二級(jí)陣營吧,其實(shí)每次的架構(gòu)升級(jí)都是隨著業(yè)務(wù)重大推進(jìn)而伴隨的,在前一代系統(tǒng)架構(gòu)上遇到的問題,業(yè)務(wù)開發(fā)過程中積累一些優(yōu)秀的開發(fā)案例,在下一代系統(tǒng)開發(fā)中就會(huì)大力推進(jìn)架構(gòu)升級(jí)。 回想起從公司成立敲出的第一行代碼算起到現(xiàn)在也快三年了,平臺(tái)的技術(shù)架構(gòu),技術(shù)體系也算是經(jīng)歷了四次比較重大的升級(jí)轉(zhuǎn)化(目前第四代架構(gòu)體系正在進(jìn)行中),臨近年底也想抽...

    U2FsdGVkX1x 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<