func main() { mgo.SetDebug(true) mgo.SetLogger(log.New(os.Stderr, "", log.LstdFlags)) session, err := mgo.Dial("localhost") if err != nil { fmt.Printf("%v", err) os.Exit(1) } var r bson.M db := session.DB("test") // err = db.C("bar").Find(nil).One(&r) // if err != nil { // fmt.Printf("%v", err) // os.Exit(1) // } // fmt.Printf("%#v\n", r) data, reply, err := db.QueryOp(&mgo.QueryOp{Collection: "test.bar", Limit: 1}) if err != nil { fmt.Printf("%v", err) os.Exit(1) } fmt.Printf("%v, %#v\n", data, reply) for _, d := range data { err = bson.Unmarshal(d, &r) if err != nil { fmt.Printf("%v", err) os.Exit(1) } fmt.Printf("%#v\n", r) } }
func newOpConnection(url string) (chan<- *mongocaputils.OpWithTime, error) { session, err := mgo.Dial(url) if err != nil { return nil, err } ch := make(chan *mongocaputils.OpWithTime) go func() { for op := range ch { t := time.Now() if t.Before(op.PlayAt) { time.Sleep(op.PlayAt.Sub(t)) } err = op.Execute(session) if err != nil { fmt.Printf("op.Execute %v", err) } } }() return ch, nil }