91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用golang在mangodb中實現CRUD操作

發布時間:2021-06-11 17:21:01 來源:億速云 閱讀:254 作者:Leah 欄目:編程語言

這篇文章給大家介紹使用golang在mangodb中實現CRUD操作,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

簡述關系型數據庫,非關系型數據庫

關系型數據庫:指采用了關系模型來組織數據的數據庫。
關系模型指的就是二維表格模型,而一個關系型數據庫就是由二維表及其之間的聯系所組成的一個數據組織

非關系型數據庫

非關系型數據庫:指非關系型的,分布式的,且一般不保證遵循 ACID 原則的數據存儲系統。

這是比較規范的說法,具體這兩者談不上誰優誰劣,各自有各自的使用場景。

其實可以粗暴的理解成一個關系型數據庫基本靠使用sql語句來操作,而非關系型數據靠key-value來進行操作

(其實按我的理解非關系型數據庫嚴格上不是一種數據庫,應該是一種數據結構化存儲方法的集合,可以是文檔或者鍵值對等,但是我不知道這么說是否正確)

MangoDB

好了,上面簡述了一下關系型和非關系型數據庫,下面來說一下今天文章的主角。

mangodb

MongoDB 將數據存儲為一個文檔,數據結構由鍵值(key=>value)對組成。MongoDB 文檔類似于 JSON 對象。字段值可以包含其他文檔,數組及文檔數組。

所以mangodb操作也是通過json(bson)格式來操作

使用golang在mangodb中實現CRUD操作 

那么go語言中是如何來操作mangodb

(1)數據庫連接

數據庫連接主要用到了mgo中的Dial()函數,連接形式如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中實現CRUD操作就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

洛阳市| 榆树市| 沁阳市| 乌兰浩特市| 石渠县| 佛冈县| 吉木萨尔县| 六枝特区| 高碑店市| 湖南省| 巨鹿县| 莱西市| 湾仔区| 扎鲁特旗| 子洲县| 云和县| 信阳市| 双柏县| 离岛区| 平凉市| 嘉黎县| 巫溪县| 察雅县| 南和县| 海淀区| 两当县| 临泽县| 双牌县| 铁岭市| 武强县| 剑阁县| 安泽县| 仁怀市| 睢宁县| 疏附县| 南丰县| 澎湖县| 荆门市| 凤冈县| 兴义市| 巴青县|