本篇文章為大家展示了如何在golang中使用mongo,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
1. mgo包安裝
go get gopkg.in/mgo.v2
但是貌似現在從gopkg.in下載不了,迂回一下,先從github上下載
go get github.com/go-mgo/mgo
下載好了之后,在$GOPATH/src/下面創建文件夾gopkg.in/mgo.v2, 然后將github.com/go-mgo/mgo的內容,拷貝到gopkg.in/mgo.v2
2. 測試代碼
// mongo_test project main.go
package main
import (
"fmt"
"math/rand"
"time"
"gopkg.in/mgo.v2"
"gopkg.in/mgo.v2/bson"
)
type GameReport struct {
// id bson.ObjectId `bson:"_id"`
Game_id int64
Game_length int64
Game_map_id string
}
func err_handler(err error) {
fmt.Printf("err_handler, error:%s\n", err.Error())
panic(err.Error())
}
func main() {
dail_info := &mgo.DialInfo{
Addrs: []string{"127.0.0.1"},
Direct: false,
Timeout: time.Second * 1,
Database: "game_report",
Source: "admin",
Username: "test1",
Password: "123456",
PoolLimit: 1024,
}
session, err := mgo.DialWithInfo(dail_info)
if err != nil {
fmt.Printf("mgo dail error[%s]\n", err.Error())
err_handler(err)
}
defer session.Clone()
// set mode
session.SetMode(mgo.Monotonic, true)
c := session.DB("game_report").C("game_detail_report")
r := rand.New(rand.NewSource(time.Now().UnixNano()))
report := GameReport{
// id: bson.NewObjectId(),
Game_id: 100,
Game_length: r.Int63() % 3600,
Game_map_id: "hello",
}
err = c.Insert(report)
if err != nil {
fmt.Printf("try insert record error[%s]\n", err.Error())
err_handler(err)
}
result := GameReport{}
var to_find_game_id int64 = 100
err = c.Find(bson.M{"game_id": to_find_game_id}).One(&result)
if err != nil {
fmt.Printf("try find record error[%s]\n", err.Error())
err_handler(err)
}
fmt.Printf("res, game_id[%d] length[%d] game_map_id[%s]\n",
to_find_game_id, result.Game_length, result.Game_map_id)
// try find all report
var results []GameReport
err = c.Find(bson.M{}).All(&results)
if err != nil {
fmt.Printf("try game all record of game_detail_report error[%s]\n",
err.Error())
err_handler(err)
}
result_count := len(results)
fmt.Printf("result count: %d\n", result_count)
for i, report := range results {
fmt.Printf("index: %d, report{ game_id: %d, game_length: %d, game_map_id: %s}\n",
i, report.Game_id, report.Game_length, report.Game_map_id)
}
}golang 是Google開發的一種靜態強類型、編譯型、并發型,并具有垃圾回收功能的編程語言,其語法與 C語言相近,但并不包括如枚舉、異常處理、繼承、泛型、斷言、虛函數等功能。
上述內容就是如何在golang中使用mongo,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。