亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

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

LinkedME2016 / 3419人閱讀

摘要:如果刪除所有用替換其他寫了一個和結(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è)計 3.1.1 數(shù)據(jù)庫設(shè)計:

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

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

字段 類型 說明
name string 姓名
age int 年齡
sid string 學(xué)號
status int 狀態(tài):1正常,9,刪除
3.1.2結(jié)構(gòu)體設(shè)計:
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會出現(xiàn)一條記錄:

3.3 查找數(shù)據(jù)
在3.2插入數(shù)據(jù)的基礎(chǔ)上,我們再插入一條數(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í)行該段程序,會打印查找到的結(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í)行該段程序,會打印查找到的結(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è)計的時候,有兩個sid為s20180907 只會刪除一條記錄。
如果刪除所有:用client.RemoveAll 替換client.Remove

4. 其他

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

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

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/19377.html

相關(guān)文章

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

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

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

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

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

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

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

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

    U2FsdGVkX1x 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<