Пример #1
0
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)
	}
}
Пример #2
0
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
}