這篇文章給大家介紹使用golang在mangodb中實現(xiàn)CRUD操作,內(nèi)容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
嵐縣網(wǎng)站建設公司成都創(chuàng)新互聯(lián)公司,嵐縣網(wǎng)站設計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為嵐縣成百上千家提供企業(yè)網(wǎng)站建設服務。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設公司要多少錢,請找那個售后服務好的嵐縣做網(wǎng)站的公司定做!
簡述關系型數(shù)據(jù)庫,非關系型數(shù)據(jù)庫
關系型數(shù)據(jù)庫:指采用了關系模型來組織數(shù)據(jù)的數(shù)據(jù)庫。
關系模型指的就是二維表格模型,而一個關系型數(shù)據(jù)庫就是由二維表及其之間的聯(lián)系所組成的一個數(shù)據(jù)組織
非關系型數(shù)據(jù)庫
非關系型數(shù)據(jù)庫:指非關系型的,分布式的,且一般不保證遵循 ACID 原則的數(shù)據(jù)存儲系統(tǒng)。
這是比較規(guī)范的說法,具體這兩者談不上誰優(yōu)誰劣,各自有各自的使用場景。
其實可以粗暴的理解成一個關系型數(shù)據(jù)庫基本靠使用sql語句來操作,而非關系型數(shù)據(jù)靠key-value來進行操作
(其實按我的理解非關系型數(shù)據(jù)庫嚴格上不是一種數(shù)據(jù)庫,應該是一種數(shù)據(jù)結構化存儲方法的集合,可以是文檔或者鍵值對等,但是我不知道這么說是否正確)
MangoDB
好了,上面簡述了一下關系型和非關系型數(shù)據(jù)庫,下面來說一下今天文章的主角。
mangodb
MongoDB 將數(shù)據(jù)存儲為一個文檔,數(shù)據(jù)結構由鍵值(key=>value)對組成。MongoDB 文檔類似于 JSON 對象。字段值可以包含其他文檔,數(shù)組及文檔數(shù)組。
所以mangodb操作也是通過json(bson)格式來操作
那么go語言中是如何來操作mangodb
(1)數(shù)據(jù)庫連接
數(shù)據(jù)庫連接主要用到了mgo中的Dial()函數(shù),連接形式如mgo.Dial(url1,url2,url3),具體代碼如下:
func ConnecToDB() *mgo.Collection { session, err := mgo.Dial("127.0.0.1:27017") if err != nil { panic(err) } //defer session.Close() session.SetMode(mgo.Monotonic, true) c := session.DB("medex").C("student") return c }
(2)插入
func InsertToMogo() { c := ConnecToDB() stu1 := Student{ Name: "xiaoming", Phone: "18933333333", Email: "12345678@qq.com", Sex: "man", } stu2 := Student{ Name: "zhangdao", Phone: "8765432", Email: "133333384@qq.com", Sex: "woman", } err := c.Insert(&stu1, &stu2) if err != nil { log.Fatal(err) } }
(3)查詢
func GetDataViaSex() { c := ConnecToDB() result := Student{} err := c.Find(bson.M{"sex": "woman"}).One(&result) if err != nil { log.Fatal(err) } fmt.Println("student", result) students := make([]Student, 20) err = c.Find(nil).All(&students) if err != nil { log.Fatal(err) } fmt.Println(students) } func GetDataViaId() { id := bson.ObjectIdHex("5a66a96306d2a40a8b884049") c := ConnecToDB() stu := &Student{} err := c.FindId(id).One(stu) if err != nil { log.Fatal(err) } fmt.Println(stu) }
這上面用了兩種查詢方法一種是查詢多個,返回多個對象:many
另一種是查詢單個,返回單個對象:one
(4)更新
func UpdateDBViaId() { //id := bson.ObjectIdHex("5a66a96306d2a40a8b884049") c := ConnecToDB() err := c.Update(bson.M{"email": "12832984@qq.com"}, bson.M{"$set": bson.M{"name": "haha", "phone": "37848"}}) if err != nil { log.Fatal(err) } }
(5)刪除
func RemoveFromMgo() { c := ConnecToDB() _, err := c.RemoveAll(bson.M{"phone": "13480989765"}) if err != nil { log.Fatal(err) } }
關于使用golang在mangodb中實現(xiàn)CRUD操作就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
文章名稱:使用golang在mangodb中實現(xiàn)CRUD操作
標題路徑:http://chinadenli.net/article2/ppseic.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供、網(wǎng)站內(nèi)鏈、網(wǎng)站維護、虛擬主機、品牌網(wǎng)站設計、手機網(wǎng)站建設
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)