裝完mongodb之后,就是為了學(xué)習(xí)一下 mgo包的使用
貼一下學(xué)習(xí)的代碼
package main
import (
"fmt"
"gopkg.in/mgo.v2"
"gopkg.in/mgo.v2/bson"
"log"
"time"
)
type Person struct {
Name string
Phone string
}
/*
通過bson:”name”這種方式可以定義MongoDB中集合的字段名,
如果不定義,mgo自動把struct的字段名首字母小寫作為集合的字段名。
如果不需要獲得id_,Id_可以不定義,在插入的時候會自動生成。
*/
type User struct {
Id_ bson.ObjectId `bson:"_id"`
Name string `bson:"name"`
Age int `bson:"age"`
JoinedAt time.Time `bson:"joined_at"`
Interests []string `bson:"interests"`
}
func main() {
//如果不在本機
//mongodb://myuser:mypass@localhost:40001,otherhost:40001/mydb
session, err := mgo.Dial("localhost:27017")
if err != nil {
panic(err)
}
defer session.Close()
session.SetMode(mgo.Monotonic, true)
/*
其實是分了兩步 1拿db 2拿collection
db := session.DB("test_db")
c := db.C("runoob")
*/
c := session.DB("test_db").C("mytable")
//插入數(shù)據(jù)
err = c.Insert(&Person{"A001", "12312312311"}, &Person{"A002", "123123123002"})
if err != nil {
log.Fatal(err)
}
//查詢
result := Person{}
err = c.Find(bson.M{"name": "A001"}).One(&result)
if err != nil {
log.Fatal(err)
}
fmt.Println("phone = ", result.Phone)
//插入類一種結(jié)構(gòu)文檔
err = c.Insert(&User{
Id_: bson.NewObjectId(),
Name: "Jimmy Kuu",
Age: 31,
JoinedAt: time.Now(),
Interests: []string{"asd", "gdfg"},
})
if err != nil {
panic(err)
}
err = c.Insert(&User{
Id_: bson.NewObjectId(),
Name: "Tracy Yu",
Age: 31,
JoinedAt: time.Now(),
Interests: []string{"Shoping", "TV"},
})
if err != nil {
panic(err)
}
//查詢所有
var users []User
//c.Find(nil).All(&users)
c.Find(bson.M{"age": 31}).All(&users)
for _, item := range users {
fmt.Println(item)
}
}
運行后打印
phone = 12312312311
{ObjectIdHex("598d3126c3666e1d23000001") Jimmy Kuu 31 2017-08-11 12:23:02.073 +0800 CST [asd gdfg]}
{ObjectIdHex("598d3126c3666e1d23000002") Tracy Yu 31 2017-08-11 12:23:02.074 +0800 CST [Shoping TV]}