code: func (s *Store) FindAggregate(dataType interface{}, query *Query, groupBy ...string) ([]*AggregateResult, error) {
  	var result []*AggregateResult
  	var err error
  	err = s.Bolt().View(func(tx *bolt.Tx) error {
  		result, err = s.TxFindAggregate(tx, dataType, query, groupBy...)
  		return err
  	})
  
  	if err != nil {
  		return nil, err
  	}
  
  	return result, nil
  }
docs: // FindAggregate returns an aggregate grouping for the passed in query
  // groupBy is optional