
Go 언어로 MongoDB 사용 ①설치적인 곳
추가
2019/01/20
htps : // 기주 b. 코 m / 고 m 고 / m 고가 더 이상 유지되지 않으므로 샘플에서는 포크 인 htps : // 기주 b. 코 m / g을 사용했습니다. 인터페이스는 함께 있습니다. Thanks to 🐰 🌸
Go 언어에서도
mongodb 설치
할애 ( 개인적으로
Go 설치
할애 (
mgo 설치 샘플 코드
mgo 설치
htps : // 기주 b. 코 m / 고 m 고 / m 고가 더 이상 유지되지 않으므로 샘플에서는 포크 인 htps : // 기주 b. 코 m / g을 사용했습니다. 인터페이스는 함께 있습니다.
Go 언어에서도
mongodb를 사용하고 싶지 않습니까?
The MongoDB driver for Go
일단 움직일 때까지
brew install mongodb
?) docker run -it -p 27017:27017 --rm mongo
를 추천합니다 brew install go
?) mgo 설치
익숙한 go get
% go get -v github.com/globalsign/mgo
오시마
샘플 코드
hoge.gopackage 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)
끝
% 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)
끝
import (
"fmt"
"github.com/globalsign/mgo"
"github.com/globalsign/mgo/bson"
)
type Person struct {
// encoding/jsonパッケージなどでおなじみの`tag`が使える
// `bson:"field_name"`で指定したフィールド名で
// mongodbのドキュメントが保存される
// また、取り出すときもこのフィールド名に対応したものがマッピングされる
ID bson.ObjectId `bson:"_id"`
Name string `bson:"name"`
Age int `bson:"age"`
}
func main() {
// sessionはコネクションプーリングとかよしなにしてくれる
session, _ := mgo.Dial("mongodb://localhost/test")
// お行儀
defer session.Close()
// データベース名でDatabaseを取得
db := session.DB("test")
ritsu := &Person{
ID: bson.NewObjectId(),
Name: "田井中律",
Age: 17,
}
// コレクション名でCollectionを取得
col := db.C("people")
// Insertメソッドを使う
col.Insert(ritsu)
// 参照用のstructを用意
p := new(Person)
// mongoのコンソールで{}で表現するものは
// だいたい"bson.M{}"という形式で表現できる
// bson.M{"created": bson.M{"$lt": time.Now()}} とか
query := db.C("people").Find(bson.M{})
// 遅延評価なので、実行されてない。Queryはあとから追加できる
// ここでQueryが実行される
query.One(&p)