Go语言中使用MongoDB ①安装方面

添加说明

    • 2019/01/20

https://github.com/go-mgo/mgo がもうメンテされてないそうので、サンプルでは、そのフォークである https://github.com/globalsign/mgo を使うようにしました。インターフェースは一緒です。
Thanks to @NishidaRyu416

用Go言語

你不想用MongoDB吗?

Go的MongoDB驱动程序

暂时先行动起来,直到…

    1. 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)

结束了

广告
将在 10 秒后关闭
bannerAds