摘要:如果刪除所有用替換其他寫了一個(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,刪除 |
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
寫了一個(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
摘要:準(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,...
摘要:為了在項(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...
摘要:總體介紹在互聯(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)行中),臨近年底也想抽...
摘要:總體介紹在互聯(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)行中),臨近年底也想抽...
閱讀 3772·2021-11-24 09:39
閱讀 3547·2019-08-30 15:56
閱讀 1399·2019-08-30 15:55
閱讀 1070·2019-08-30 15:53
閱讀 1954·2019-08-29 18:37
閱讀 3634·2019-08-29 18:32
閱讀 3164·2019-08-29 16:30
閱讀 2999·2019-08-29 15:14