装完mongodb之后,就是为了学习一下 mgo包的使用
贴一下学习的代码
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")
//插入数据
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)
//插入类一种结构文档
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]}
有疑问加站长微信联系(非本文作者)