code: func (q *query) fieldNames() []string {
  	switch {
  	case q.hasIncludes():
  		return q.includes
  	case q.hasExcludes():
  		results := q.collection.spec.fieldNames()
  		for _, name := range q.excludes {
  			results = removeElementFromStringSlice(results, name)
  		}
  		return results
  	default:
  		return q.collection.spec.fieldNames()
  	}
  }
docs: // fieldNames parses the includes and excludes properties to return a list of
  // field names which should be included in all find operations. If there are no
  // includes or excludes, it returns all the field names.