摘要:沒有類這一概念,對于變量的捆綁都是由鍵值對形式的結構體實現的。在做記錄的查詢時,需要新建一個同類型的結構體或結構體數組,然后執行操作,如果參數為空,則返回全部記錄如果你熟悉的操作,可以看出,這樣的操作與直接在內操作幾乎相同。
go沒有類這一概念,對于變量的捆綁都是由鍵值對形式的結構體(struct)實現的。
這對同樣是以鍵值對形式存儲的mongodb以及json都非常友好。所以在go中,并不是很依賴建立在mongodb之上的orm,使用比較底層的驅動級的接口即可方便的進行操作。
本篇文章將以商品(goods)為例,簡單講解如何使用mgo進行簡單的增刪改查操作。
mgomgo (pronounced as mango) is a MongoDB driver for the Go language that implements a rich and well tested selection of features under a very simple API following standard Go idioms.
打開終端輸入
go get gopkg.in/mgo.v2
在當前pkg下新建goods.go文件, 對mgo提供的接口進行一些封裝:
func connect(cName string) (*mgo.Session, *mgo.Collection) { session, err := mgo.Dial("$mongoHost") //Mongodb"s connection if err != nil { panic(err) } session.SetMode(mgo.Monotonic, true) //return a instantiated collect return session, session.DB(mongoDB).C(cName) }
定義goods實例:
type Goods struct { ID string Name string Price string Url string }
接下來我們要存入第一條記錄:
func (a *Goods) save() error { s, c := connect("goods") defer s.Close() a.ID = bson.NewObjectId().Hex() return c.Insert(&a) }
特別注意: 如果在定義時將ID的類型定義為 bson.ObjectID,并指定bson標簽為_id,mongodb將不會為它分配新的id。但是這樣的結構在與json做交互時不是很方便。
在做記錄的查詢時,需要新建一個同類型的結構體或結構體數組,然后執行Find操作,如果參數為空,則返回全部記錄:
func (a Goods) all() ([]Goods, error) { s, c := connect("goods") defer s.Close() var group []Goods err := c.Find(nil).All(&group) return group, err }
func (a *Goods) get(id string) error { s, c := connect("goods") defer s.Close() return c.Find(bson.M{"id": id}).One(&a) }
如果你熟悉mongodb的操作,可以看出,這樣的操作與直接在shell內操作幾乎相同。
刪除:
func (a Goods) delete() error { s, c := connect("goods") defer s.Close() return c.Remove(bson.M{"id": a.ID}) }
更新:
func (a *Goods) update() error { s, c := connect("goods") defer s.Close() c.Update(bson.M{"id": a.ID}, a) return a.get(a.ID) }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/19226.html
摘要:本節將學習來統一管理和部署微服務,引入第三個微服務并進行存儲數據。到目前為止,要想啟動微服務的容器,均在其中的同時設置其環境變量,服務多了以后管理起來十分麻煩。 譯文鏈接:wuYin/blog原文鏈接:ewanvalentine.io,翻譯已獲作者 Ewan Valentine 授權。 本文完整代碼:GitHub 在上節中,我們使用 go-micro 重新實現了微服務并進行了 Doc...
摘要:準備數據結構這個以對一個簡單的通訊錄進行插入查詢更新刪除記錄為例,中包含和兩個字段下載還沒出官方的驅動包,是現在比較流行的第三方包,能找到的相關資料也比較多。準備實現對的增刪改查操作,先想了下怎么寫測試案例。查找,通過查找該條記錄。 環境聲明:go version go1.11MongoDB server version 4.0.3 背景 這是我第一次接觸golang和MongoDB,...
摘要:推薦閱讀資源庫工具應用程序精選列表中文版有哪些鮮為人知,但是很有意思的網站一份攻城獅筆記每天搜集上優秀的項目一些有趣的民間故事超好用的谷歌瀏覽器油猴插件合集目錄資源文檔文章圖書會談教程更多庫工具管理數據部署桌面發展監控應用資源文檔介紹文檔教 推薦閱讀 MongoDB 資源、庫、工具、應用程序精選列表中文版 有哪些鮮為人知,但是很有意思的網站? 一份攻城獅筆記 每天搜集 Github ...
摘要:一個簡單的用戶管理的已經完成,現在我們需要在頁面上展示,方便用戶管理。創建首頁頁面首頁歡迎頁面首頁實戰課程你想學點啥上班摸魚下班充電案例上手本課程是一個系列基礎教程,目標是帶領讀者上手實戰,課程以新版本的核心概念作為主線。 一個簡單的用戶管理的CRUD已經完成,現在我們需要在頁面上展示,方便用戶管理。盡管現在已經流行前后分離開發,但是在一些小公司做的項目并不需要前端開發人員,頁面也是后...
閱讀 642·2021-11-25 09:43
閱讀 1655·2021-11-18 10:02
閱讀 1033·2021-10-15 09:39
閱讀 1877·2021-10-12 10:18
閱讀 2115·2021-09-22 15:43
閱讀 756·2021-09-22 15:10
閱讀 2084·2019-08-30 15:53
閱讀 978·2019-08-30 13:00