DRYな備忘録

Don't Repeat Yourself.

Go言語でmongodb使うときのmgoのメモ

Goでmongodb使うときは

まあこれ使うと思う

しりたいこと

  • embedしたstruct込みでポインタ渡すとキャストしてくれるのかという件

というのも

package main

import (
    "fmt"
    mgo "gopkg.in/mgo.v2"
    "gopkg.in/mgo.v2/bson"
)

type X struct {
    Name string `bson:"name"`
    Age  int    `bson:"age"`
}

type A struct {
    X
    Job string
}

func main() {
    s, _ := mgo.Dial("mongodb://localhost/test")
    db := s.DB("test")

    a := &A{
        X{
            Name: "otiai10",
            Age:  17,
        },
        "fighter",
    }
    db.C("xxx").Insert(a)

    b := new(A)
    db.C("xxx").Find(bson.M{}).One(&b)
    fmt.Printf("%+v\n", b)
}

実行結果

% go run hoge.go
&{X:{Name:otiai10 Age:17} Job:fighter}

雑感

ふつうにいけとるやん