code: func (c *DialContext) NextSeq(db string, collection string, id string) (int, error) {
  	s := c.Ref()
  	defer c.UnRef(s)
  
  	var res struct {
  		Seq int
  	}
  	_, err := s.DB(db).C(collection).FindId(id).Apply(mgo.Change{
  		Update:    bson.M{"$inc": bson.M{"seq": 1}},
  		ReturnNew: true,
  	}, &res)
  
  	return res.Seq, err
  }
docs: // goroutine safe