国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Go與MongoDB

Baaaan / 1664人閱讀

摘要:沒有類這一概念,對于變量的捆綁都是由鍵值對形式的結構體實現的。在做記錄的查詢時,需要新建一個同類型的結構體或結構體數組,然后執行操作,如果參數為空,則返回全部記錄如果你熟悉的操作,可以看出,這樣的操作與直接在內操作幾乎相同。

go沒有類這一概念,對于變量的捆綁都是由鍵值對形式的結構體(struct)實現的。
這對同樣是以鍵值對形式存儲的mongodb以及json都非常友好。所以在go中,并不是很依賴建立在mongodb之上的orm,使用比較底層的驅動級的接口即可方便的進行操作。

本篇文章將以商品(goods)為例,簡單講解如何使用mgo進行簡單的增刪改查操作。

mgo
mgo (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

相關文章

  • Golang 微服務教程(三)

    摘要:本節將學習來統一管理和部署微服務,引入第三個微服務并進行存儲數據。到目前為止,要想啟動微服務的容器,均在其中的同時設置其環境變量,服務多了以后管理起來十分麻煩。 譯文鏈接:wuYin/blog原文鏈接:ewanvalentine.io,翻譯已獲作者 Ewan Valentine 授權。 本文完整代碼:GitHub 在上節中,我們使用 go-micro 重新實現了微服務并進行了 Doc...

    Drummor 評論0 收藏0
  • Mongodb使用

    摘要:表達式是無狀態的,只能用于計算當前聚合管道的文檔,不能處理其它的文檔。可以用來重命名增加或刪除域,也可以用于創建計算結果以及嵌套文檔用于過濾數據,只輸出符合條件的文檔。 1.下載安裝 1.1.首先去官網下載mongodb對應版本安裝https://www.mongodb.com/download-center ?????解壓到目錄 例如:c:/mongo ?????創建文件夾用于m...

    luxixing 評論0 收藏0
  • Go語言借助mgo實現一個對MongoDB進行增刪改查的demo

    摘要:準備數據結構這個以對一個簡單的通訊錄進行插入查詢更新刪除記錄為例,中包含和兩個字段下載還沒出官方的驅動包,是現在比較流行的第三方包,能找到的相關資料也比較多。準備實現對的增刪改查操作,先想了下怎么寫測試案例。查找,通過查找該條記錄。 環境聲明:go version go1.11MongoDB server version 4.0.3 背景 這是我第一次接觸golang和MongoDB,...

    Jingbin_ 評論0 收藏0
  • MongoDB 資源、庫、工具、應用程序精選列表中文版

    摘要:推薦閱讀資源庫工具應用程序精選列表中文版有哪些鮮為人知,但是很有意思的網站一份攻城獅筆記每天搜集上優秀的項目一些有趣的民間故事超好用的谷歌瀏覽器油猴插件合集目錄資源文檔文章圖書會談教程更多庫工具管理數據部署桌面發展監控應用資源文檔介紹文檔教 推薦閱讀 MongoDB 資源、庫、工具、應用程序精選列表中文版 有哪些鮮為人知,但是很有意思的網站? 一份攻城獅筆記 每天搜集 Github ...

    e10101 評論0 收藏0
  • webflux 用戶管理界面

    摘要:一個簡單的用戶管理的已經完成,現在我們需要在頁面上展示,方便用戶管理。創建首頁頁面首頁歡迎頁面首頁實戰課程你想學點啥上班摸魚下班充電案例上手本課程是一個系列基礎教程,目標是帶領讀者上手實戰,課程以新版本的核心概念作為主線。 一個簡單的用戶管理的CRUD已經完成,現在我們需要在頁面上展示,方便用戶管理。盡管現在已經流行前后分離開發,但是在一些小公司做的項目并不需要前端開發人員,頁面也是后...

    dmlllll 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<