rethink.go
func (s RethinkStore) FilterBefore(id string, filter map[string]interface{}, count int, skip int, store string, opts ObjectStoreOptions) (rows ObjectRows, err error) {
	rootTerm := r.DB(s.Database).Table(store).Between(
		r.MinVal, id, r.BetweenOpts{RightBound: "closed"}).OrderBy(
		r.OrderByOpts{Index: r.Desc("id")}).Filter(
		s.transformFilter(nil, filter)).Limit(count)
	result, err := rootTerm.Run(s.Session)
	if err != nil {
		return
	}
	if result.Err() != nil {
		return nil, result.Err()
	}
	if result.IsNil() {
		return nil, ErrNotFound
	}
	rows = RethinkRows{result}
	return
}
func (s RethinkStore) FilterBefore(id string, filter map[string]interface{}, count int, skip int, store string, opts ObjectStoreOptions) (rows ObjectRows, err error) {
	rootTerm := r.DB(s.Database).Table(store).Between(
		r.MinVal, id, r.BetweenOpts{RightBound: "closed"}).OrderBy(
		r.OrderByOpts{Index: r.Desc("id")}).Filter(
		s.transformFilter(nil, filter)).Limit(count)
	result, err := rootTerm.Run(s.Session)
	if err != nil {
		return
	}
	if result.Err() != nil {
		return nil, result.Err()
	}
	if result.IsNil() {
		return nil, ErrNotFound
	}
	rows = RethinkRows{result}
	return
}
//FilterBefore returns rows created before a provided key. It accepts a filter and result shaping arguments