Go 언어로 MongoDB 사용 ①설치적인 곳

Go 언어로 MongoDB 사용 ①설치적인 곳

2022-10-05 last update

10 minutes reading 5 mgo MongoDB
추가
  • 2019/01/20

  • htps : // 기주 b. 코 m / 고 m 고 / m 고가 더 이상 유지되지 않으므로 샘플에서는 포크 인 htps : // 기주 b. 코 m / g을 사용했습니다. 인터페이스는 함께 있습니다.
  • Thanks to 🐰 🌸


  • Go 언어에서도



    mongodb를 사용하고 싶지 않습니까?


    The MongoDB driver for Go

    일단 움직일 때까지


  • mongodb 설치
  • 할애 ( brew install mongodb ?)
  • 개인적으로 docker run -it -p 27017:27017 --rm mongo를 추천합니다

  • Go 설치
  • 할애 ( brew install go ?)

  • mgo 설치
  • 샘플 코드

  • mgo 설치



    익숙한 go get
    % go get -v github.com/globalsign/mgo
    

    오시마

    샘플 코드



    hoge.go
    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}
    }
    

    죄송합니다. copipe go run hoge.go 해보십시오.

    이하, 메모



    임포트
    import (
        "fmt"
        "github.com/globalsign/mgo"
        "github.com/globalsign/mgo/bson"
    )
    

    struct와 mongo적인 document의 매핑에 대해서
    type Person struct {
        // encoding/jsonパッケージなどでおなじみの`tag`が使える
        // `bson:"field_name"`で指定したフィールド名で
        // mongodbのドキュメントが保存される
        // また、取り出すときもこのフィールド名に対応したものがマッピングされる
        ID   bson.ObjectId `bson:"_id"`
        Name string        `bson:"name"`
        Age  int           `bson:"age"`
    }
    

    참고: ht tp // //아이 c. rg/ㅁ x. 오 rg / v2 / m 고 / b

    호스트와의 연결
    func main() {
        // sessionはコネクションプーリングとかよしなにしてくれる
        session, _ := mgo.Dial("mongodb://localhost/test")
        // お行儀
        defer session.Close()
        // データベース名でDatabaseを取得
        db := session.DB("test")
    

    참고: htp : // 어린 시절 c. rg / ppg. 인/m고. v2#세시온

    Create 계의 메소드
        ritsu := &Person{
            ID:   bson.NewObjectId(),
            Name: "田井中律",
            Age:  17,
        }
        // コレクション名でCollectionを取得
        col := db.C("people")
        // Insertメソッドを使う
        col.Insert(ritsu)
    

    참고: htp : // 어린 시절 c. rg / ppg. 인/m고. v2 #코치치오

    Find 계 메서드
        // 参照用のstructを用意
        p := new(Person)
        // mongoのコンソールで{}で表現するものは
        // だいたい"bson.M{}"という形式で表現できる
        // bson.M{"created": bson.M{"$lt": time.Now()}} とか
        query := db.C("people").Find(bson.M{})
        // 遅延評価なので、実行されてない。Queryはあとから追加できる
    

    참고: ht tp // //아이 c. rg / ppg. 인/m고. v2#쿠에 ry
        // ここでQueryが実行される
        query.One(&p)