code: func (self *Model) Find(query ...interface{}) *Query {
  
  	var finalQuery interface{}
  
  	//accept zero or one query param
  	if len(query) == 0 {
  		finalQuery = bson.M{}
  	} else if len(query) == 1 {
  		finalQuery = query[0]
  	} else {
  		panic("DB: Find method accepts no or maximum one query param.")
  	}
  
  	return &Query{
  		query:      finalQuery,
  		collection: self.Collection,
  		connection: self.connection,
  		multiple:   true,
  	}
  }
docs: /*
  Use this method if you want to find a set of matching documents. Like FindOne, a map is expected as query param, but you also can call this
  method without any arguments. When the query is executed you have to pass a pointer to a slice of IDocumentBase types.
  
  For example:
  	User := connection.Model("User")
  
  	users := []*models.User{}
  
  	err := User.Find(bson.M{"firstname" : "Max", "deleted" : false}).Populate("Messages").Exec(&users)
  
  	if _, ok := err.(*mongodm.NotFoundError); ok { //you also can check the length of the slice
  		//no records were found
  	} else if err != nil {
  		//database error
  	} else {
  		for user, _ := range users {
  			fmt.Println("%v", user)
  		}
  	}
  */