Go语言中使用MongoDB ①安装方面
添加说明
-
- 2019/01/20
https://github.com/go-mgo/mgo がもうメンテされてないそうので、サンプルでは、そのフォークである https://github.com/globalsign/mgo を使うようにしました。インターフェースは一緒です。
Thanks to @NishidaRyu416
用Go言語
你不想用MongoDB吗?
Go的MongoDB驱动程序
暂时先行动起来,直到…
-
- MongoDB的安装
省略(使用brew安装mongodb?)
我个人推荐使用docker运行以下命令:docker run -it -p 27017:27017 –rm mongo
Go的安装
省略(使用brew安装go?)
mgo的安装
示例代码
安装Mgo
请拿去
% go get -v github.com/globalsign/mgo
结束
示例代码
package main
import (
"fmt"
"log"
"github.com/globalsign/mgo"
"github.com/globalsign/mgo/bson"
)
type Person struct {
ID bson.ObjectId `bson:"_id"`
Name string `bson:"name"`
Age int `bson:"age"`
}
func main() {
session, _ := mgo.Dial("mongodb://localhost/test")
defer session.Close()
db := session.DB("test")
/**
* つくるところ
**/
ritsu := &Person{
ID: bson.NewObjectId(),
Name: "田井中律",
Age: 17,
}
col := db.C("people")
if err := col.Insert(ritsu); err != nil {
log.Fatalln(err)
}
/**
* みつけるところ
**/
p := new(Person)
query := db.C("people").Find(bson.M{})
query.One(&p)
/**
* 結果
**/
fmt.Printf("%+v\n", p)
// &{ID:ObjectIdHex("5478517a9871b9b8e42e2ee2") Name:田井中律 Age:17}
}
请执行复制粘贴并运行hoge.go,这样就完成了。
以下,记事本
进口部分
import (
"fmt"
"github.com/globalsign/mgo"
"github.com/globalsign/mgo/bson"
)
有关结构体与MongoDB文档之间的映射
type Person struct {
// encoding/jsonパッケージなどでおなじみの`tag`が使える
// `bson:"field_name"`で指定したフィールド名で
// mongodbのドキュメントが保存される
// また、取り出すときもこのフィールド名に対応したものがマッピングされる
ID bson.ObjectId `bson:"_id"`
Name string `bson:"name"`
Age int `bson:"age"`
}
参考网址:http://godoc.org/labix.org/v2/mgo/bson
与主持人的联系或关系
func main() {
// sessionはコネクションプーリングとかよしなにしてくれる
session, _ := mgo.Dial("mongodb://localhost/test")
// お行儀
defer session.Close()
// データベース名でDatabaseを取得
db := session.DB("test")
参考:http://godoc.org/gopkg.in/mgo.v2#Session
创建的方法
ritsu := &Person{
ID: bson.NewObjectId(),
Name: "田井中律",
Age: 17,
}
// コレクション名でCollectionを取得
col := db.C("people")
// Insertメソッドを使う
col.Insert(ritsu)
参考: http://godoc.org/gopkg.in/mgo.v2#Collection – 参考网站:http://godoc.org/gopkg.in/mgo.v2#Collection
寻找方法(Find的方法)
// 参照用のstructを用意
p := new(Person)
// mongoのコンソールで{}で表現するものは
// だいたい"bson.M{}"という形式で表現できる
// bson.M{"created": bson.M{"$lt": time.Now()}} とか
query := db.C("people").Find(bson.M{})
// 遅延評価なので、実行されてない。Queryはあとから追加できる
请参考这个链接:http://godoc.org/gopkg.in/mgo.v2#Query。
// ここでQueryが実行される
query.One(&p)
结束了