code: func (s RethinkStore) FilterGet(filter map[string]interface{}, store string, dst interface{}, opts ObjectStoreOptions) error {
  
  	// var rootTerm = s.getRootTerm(store, filter, opts)
  	var rootTerm = r.DB(s.Database).Table(store)
  	if opts != nil {
  		indexes := opts.GetIndexes()
  		for k := range indexes {
  			if val, ok := filter[k].(string); ok {
  				rootTerm = rootTerm.GetAllByIndex(k, val)
  				break
  			}
  		}
  	}
  	rootTerm = rootTerm.Filter(s.transformFilter(nil, filter))
  	result, err := rootTerm.Limit(1).Run(s.Session)
  	logger.Debug("FilterGet::done", "store", store, "query", rootTerm.String())
  	if err != nil {
  		logger.Error("failed to get", "err", err.Error())
  		return err
  	}
  	defer result.Close()
  	if result.Err() != nil {
  		return result.Err()
  	}
  	if result.IsNil() == true {
  		return ErrNotFound
  	}
  	if err := result.One(dst); err != nil {
  		println(err.Error())
  		if err == r.ErrEmptyResult {
  			return ErrNotFound
  		} else {
  			return err
  		}
  
  	}
  	return nil
  }
docs: /*
  FilterGet retrieves only one item based on a filter
  It is used as a shortcut to FilterGetAll with size == 1
  */