Go言語でMongoDBを操作する

Go言語からMongoを操作する前に

GoからMongoDBを操作する方法です。bazaarというバージョン管理ソフトを使ってライブラリを入れる必要があるのでインストールと、Go言語自体のライブラリを格納するGOPATHが設定されている必要があります。適当にググって設定しておいてください。

ubuntu


$ sudo apt-get install bzr

mac (ports)


$ sudo port install bzr

mgoライブラリインストール

MongoDB用のライブラリをgo getでインストール。
http://labix.org/mgo


$ go get labix.org/v2/mgo

Exampleを実行させてみる

サイトにあったexampleを動ささせます。

exampleソースコード

接続ホストのところだけlocalhostのmongodbにつなぐように変更しています。
[java]
package main

import (
"fmt"
"labix.org/v2/mgo"
"labix.org/v2/mgo/bson"
)

type Person struct {
Name string
Phone string
}

func main() {
session, err := mgo.Dial("localhost")
if err != nil {
panic(err)
}
defer session.Close()

// Optional. Switch the session to a monotonic behavior.
session.SetMode(mgo.Monotonic, true)

c := session.DB("test").C("people")
err = c.Insert(&Person{"Ale", "+55 53 8116 9639"},
&Person{"Cla", "+55 53 8402 8510"})
if err != nil {
panic(err)
}

result := Person{}
err = c.Find(bson.M{"name": "Ale"}).One(&result)
if err != nil {
panic(err)
}

fmt.Println("Phone:", result.Phone)
}
[/java]

実行と結果確認


$ go run mongo_example.go
Phone: +55 53 8116 9639
$ mongo
MongoDB shell version: 2.4.8
connecting to: test
> use test
switched to db test
> show collections
people
system.indexes
> db.people.find()
{ "_id" : ObjectId("5319ff3e265426f4f063a490"), "name" : "Ale", "phone" : "+55 53 8116 9639" }
{ "_id" : ObjectId("5319ff3e265426f4f063a491"), "name" : "Cla", "phone" : "+55 53 8402 8510" }

とりあえずサンプルを動作させるところまで。
mgoのAPIを参考にhttp://godoc.org/labix.org/v2/mgo