code: func (self *Model) FindOne(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{
  		collection: self.Collection,
  		connection: self.connection,
  		query:      finalQuery,
  		multiple:   false,
  	}
  }
docs: /*
  If you want to find a single document by specifing query options you have to use this method. The query param expects a map (e.g. bson.M{}) and
  returns a query object which has to be executed manually. Make sure that you pass an IDocumentBase type to the exec function.
  After this you obtain the first matching object. You also can check the error if something was found.
  
  For example:
  	User := connection.Model("User")
  
  	user := &models.User{}
  
  	err := User.FindOne(bson.M{"firstname" : "Max", "deleted" : false}).Populate("Messages").Exec(user)
  
  	if _, ok := err.(*mongodm.NotFoundError); ok {
  		//no records were found
  	} else if err != nil {
  		//database error
  	} else {
  		fmt.Println("%v", user)
  	}
  */