国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

golang基礎學習-MongoDB使用

LinkedME2016 / 3360人閱讀

摘要:如果刪除所有用替換其他寫了一個和結合的數據查詢服務細節可點擊鏈接到查看

1.系統環境

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 數據設計 3.1.1 數據庫設計:

數據庫名:mydb_tutorial
集合名: t_student

數據集合:t_student字段說明

字段 類型 說明
name string 姓名
age int 年齡
sid string 學號
status int 狀態:1正常,9,刪除
3.1.2結構體設計:
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 插入數據
    mongo, err := mgo.Dial("127.0.0.1") // 建立連接 

    defer mongo.Close()

    if err != nil {
        return false
    }

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

    //創建數據
    data := Student{
        Name:   "seeta",
        Age:    18,
        Sid:    "s20180907",
        Status: 1,
    }

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

    if cErr != nil {
        return false
    }
    return true

執行該段程序,MongoDB會出現一條記錄:

3.3 查找數據
在3.2插入數據的基礎上,我們再插入一條數據:
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

執行該段程序,會打印查找到的結果:

{seeta 17 s20180907 1}
3.3.2 findAll

查找status為1的數據

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條數據
    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

執行該段程序,會打印查找到的結果:

{[{seeta1 18 s20180908 1} {seeta 18 s20180907 1}]}
3.4 更新數據

更新數據前:

    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
}

執行命令后:


只更新了一條數據的年齡

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

用client.UpdateAll 替換client.Update 就可以了
3.5 刪除數據

刪除數據: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

如果數據庫設計的時候,有兩個sid為s20180907 只會刪除一條記錄。
如果刪除所有:用client.RemoveAll 替換client.Remove

4. 其他

寫了一個gin和mgo結合的數據查詢服務demo,細節可點擊鏈接到github查看

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/19377.html

相關文章

  • 用Go語言借助mgo實現一個對MongoDB進行增刪改查的demo

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

    Jingbin_ 評論0 收藏0
  • 初探MongoDB:暴力美學

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

    yy13818512006 評論0 收藏0
  • 從零到百億互聯網金融架構發展史

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

    mrcode 評論0 收藏0
  • 從零到百億互聯網金融架構發展史

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

    U2FsdGVkX1x 評論0 收藏0

發表評論

0條評論

LinkedME2016

|高級講師

TA的文章

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