golang中使用mongo的方法介紹
前言
筆者使用的mongo驅(qū)動是mgo, 這個使用的人比較多,文檔也比較齊全
官網(wǎng)地址:http://labix.org/mgo
文檔地址:https://godoc.org/labix.org/v2/mgo
源碼地址:https://github.com/go-mgo/mgo
1. mgo包安裝
go get gopkg.in/mgo.v2
但是貌似現(xiàn)在從gopkg.in下載不了,迂回一下,先從github上下載
go get github.com/go-mgo/mgo
下載好了之后,在$GOPATH/src/下面創(chuàng)建文件夾gopkg.in/mgo.v2, 然后將github.com/go-mgo/mgo的內(nèi)容,拷貝到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)
}
}
這樣要注意的一點是 GameReport 里面的字段都要首字母大寫,否則不會寫入mongo
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
- golang操作mongodb的方法
- Golang對MongoDB數(shù)據(jù)庫的操作簡單封裝教程
- golang 連接mongoDB的方法示例
- mongodb官方的golang驅(qū)動基礎使用教程分享
- Golang Mongodb模糊查詢的使用示例
- 利用golang驅(qū)動操作MongoDB數(shù)據(jù)庫的步驟
- 詳解Golang使用MongoDB通用操作
- golang連接MongoDB數(shù)據(jù)庫及數(shù)據(jù)庫操作指南
- Golang對mongodb進行聚合查詢詳解
- Go語言學習筆記之golang操作MongoDB數(shù)據(jù)庫
- Golang實現(xiàn)Mongo數(shù)據(jù)庫增刪改查操作
相關文章
基于golang編寫一個word/excel/ppt轉(zhuǎn)pdf的工具
這篇文章主要為大家詳細介紹了如何基于golang編寫一個word/excel/ppt轉(zhuǎn)pdf的工具,文中的示例代碼講解詳細,感興趣的小伙伴可以了解下2024-11-11
Go項目與Docker結(jié)合實現(xiàn)高效部署深入探究
在現(xiàn)代軟件開發(fā)中,使用Docker部署應用程序已經(jīng)成為一種標準實踐,本文將深入探討如何將Go項目與Docker結(jié)合,實現(xiàn)高效、可靠的部署過程,通過詳細的步驟和豐富的示例,你將能夠迅速掌握這一流程2023-12-12
golang服務報錯:?write:?broken?pipe的解決方案
在開發(fā)在線客服系統(tǒng)的時候,看到日志里有一些錯誤信息,下面這篇文章主要給大家介紹了關于golang服務報錯:?write:?broken?pipe的解決方案,需要的朋友可以參考下2022-09-09

