摘要:如果刪除所有用替換其他寫了一個和結合的數據查詢服務細節可點擊鏈接到查看
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,刪除 |
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
寫了一個gin和mgo結合的數據查詢服務demo,細節可點擊鏈接到github查看
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/19377.html
摘要:準備數據結構這個以對一個簡單的通訊錄進行插入查詢更新刪除記錄為例,中包含和兩個字段下載還沒出官方的驅動包,是現在比較流行的第三方包,能找到的相關資料也比較多。準備實現對的增刪改查操作,先想了下怎么寫測試案例。查找,通過查找該條記錄。 環境聲明:go version go1.11MongoDB server version 4.0.3 背景 這是我第一次接觸golang和MongoDB,...
摘要:為了在項目中更好的使用來完成我們的業務,我們探究了性能暴力的成因以及如何更加合理的使用。的出現能夠快速的完成系統的開發于拓展需求。不同的業務會導致不同的數據庫使用情況。緩存類型根據情況選擇或高速度也是有代價的。轉自初探暴力美學 AUTH:PHILO version:2.0 showImg(http://7viiaq.com1.z0.glb.clouddn.com/u=14409196...
摘要:總體介紹在互聯網金融行業一百多億其實也算不上大平臺,也就是二級陣營吧,其實每次的架構升級都是隨著業務重大推進而伴隨的,在前一代系統架構上遇到的問題,業務開發過程中積累一些優秀的開發案例,在下一代系統開發中就會大力推進架構升級。 回想起從公司成立敲出的第一行代碼算起到現在也快三年了,平臺的技術架構,技術體系也算是經歷了四次比較重大的升級轉化(目前第四代架構體系正在進行中),臨近年底也想抽...
摘要:總體介紹在互聯網金融行業一百多億其實也算不上大平臺,也就是二級陣營吧,其實每次的架構升級都是隨著業務重大推進而伴隨的,在前一代系統架構上遇到的問題,業務開發過程中積累一些優秀的開發案例,在下一代系統開發中就會大力推進架構升級。 回想起從公司成立敲出的第一行代碼算起到現在也快三年了,平臺的技術架構,技術體系也算是經歷了四次比較重大的升級轉化(目前第四代架構體系正在進行中),臨近年底也想抽...
閱讀 3731·2021-11-24 09:39
閱讀 3445·2019-08-30 15:56
閱讀 1370·2019-08-30 15:55
閱讀 1031·2019-08-30 15:53
閱讀 1919·2019-08-29 18:37
閱讀 3601·2019-08-29 18:32
閱讀 3128·2019-08-29 16:30
閱讀 2918·2019-08-29 15:14