-
-
Save wumingyu12/e0ccc54e73bdd2e2b9979efc7ff3c6e3 to your computer and use it in GitHub Desktop.
mgo example,含中文注释
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| package main | |
| /* | |
| api: http://labix.org/mgo api文档的网站 | |
| start: go get go get gopkg.in/mgo.v2 一开始要运行这个安装库 | |
| */ | |
| import ( | |
| "fmt" | |
| //"labix.org/v2/mgo" | |
| //"labix.org/v2/mgo/bson" | |
| "gopkg.in/mgo.v2" | |
| "gopkg.in/mgo.v2/bson" | |
| "time" | |
| ) | |
| type Person struct { | |
| ID bson.ObjectId `bson:"_id,omitempty"` | |
| Name string | |
| Phone string | |
| Timestamp time.Time | |
| } | |
| var ( | |
| IsDrop = true | |
| ) | |
| func main() { | |
| session, err := mgo.Dial("127.0.0.1") //连接新建会话,默认端口 | |
| if err != nil { | |
| panic(err) | |
| } | |
| defer session.Close() | |
| session.SetMode(mgo.Monotonic, true) | |
| // Drop Database 删除数据库test | |
| if IsDrop { | |
| err = session.DB("test").DropDatabase() | |
| if err != nil { | |
| panic(err) | |
| } | |
| } | |
| // Collection People,新建数据库并新建一个people的集合 | |
| c := session.DB("test").C("people") | |
| // Index 索引操作和后面的没有关系注释掉一样可以运行 | |
| index := mgo.Index{ | |
| Key: []string{"name", "phone"}, | |
| Unique: true, | |
| DropDups: true, | |
| Background: true, | |
| Sparse: true, | |
| } | |
| err = c.EnsureIndex(index) | |
| if err != nil { | |
| panic(err) | |
| } | |
| // Insert Datas | |
| err = c.Insert(&Person{Name: "Ale", Phone: "+55 53 1234 4321", Timestamp: time.Now()}, | |
| &Person{Name: "Cla", Phone: "+66 33 1234 5678", Timestamp: time.Now()}) | |
| if err != nil { | |
| panic(err) | |
| } | |
| // Query One | |
| result := Person{} | |
| err = c.Find(bson.M{"name": "Ale"}).Select(bson.M{"phone": 0}).One(&result) | |
| if err != nil { | |
| panic(err) | |
| } | |
| fmt.Println("Phone", result) | |
| // Query All | |
| var results []Person | |
| err = c.Find(bson.M{"name": "Ale"}).Sort("-timestamp").All(&results) | |
| if err != nil { | |
| panic(err) | |
| } | |
| fmt.Println("Results All: ", results) | |
| // Update | |
| colQuerier := bson.M{"name": "Ale"} | |
| change := bson.M{"$set": bson.M{"phone": "+86 99 8888 7777", "timestamp": time.Now()}} | |
| err = c.Update(colQuerier, change) | |
| if err != nil { | |
| panic(err) | |
| } | |
| // Query All | |
| err = c.Find(bson.M{"name": "Ale"}).Sort("-timestamp").All(&results) | |
| if err != nil { | |
| panic(err) | |
| } | |
| fmt.Println("Results All: ", results) | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment