59 lines
1.1 KiB
Go
59 lines
1.1 KiB
Go
// Example code for Chapter 5.6 from "Build Web Application with Golang"
|
|
// Purpose: Shows you have to perform basic CRUD operations for a mongodb driver.
|
|
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"labix.org/v2/mgo"
|
|
"labix.org/v2/mgo/bson"
|
|
)
|
|
|
|
type Person struct {
|
|
Name string
|
|
Phone string
|
|
}
|
|
|
|
func checkError(err error) {
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
}
|
|
|
|
const (
|
|
DB_NAME = "test"
|
|
DB_COLLECTION = "people"
|
|
)
|
|
|
|
func main() {
|
|
session, err := mgo.Dial("localhost")
|
|
checkError(err)
|
|
defer session.Close()
|
|
|
|
session.SetMode(mgo.Monotonic, true)
|
|
|
|
c := session.DB(DB_NAME).C(DB_COLLECTION)
|
|
err = c.DropCollection()
|
|
checkError(err)
|
|
|
|
ale := Person{"Ale", "555-5555"}
|
|
cla := Person{"Cla", "555-1234"}
|
|
|
|
fmt.Println("Inserting")
|
|
err = c.Insert(&ale, &cla)
|
|
checkError(err)
|
|
|
|
fmt.Println("Updating")
|
|
ale.Phone = "555-0101"
|
|
err = c.Update(bson.M{"name": "Ale"}, &ale)
|
|
|
|
fmt.Println("Querying")
|
|
result := Person{}
|
|
err = c.Find(bson.M{"name": "Ale"}).One(&result)
|
|
checkError(err)
|
|
fmt.Println("Phone:", result.Phone)
|
|
|
|
fmt.Println("Deleting")
|
|
err = c.Remove(bson.M{"name": "Ale"})
|
|
checkError(err)
|
|
}
|