code: func (ns *Namespace) Where(seq, key interface{}, args ...interface{}) (interface{}, error) {
  	seqv, isNil := indirect(reflect.ValueOf(seq))
  	if isNil {
  		return nil, errors.New("can't iterate over a nil value of type " + reflect.ValueOf(seq).Type().String())
  	}
  
  	mv, op, err := parseWhereArgs(args...)
  	if err != nil {
  		return nil, err
  	}
  
  	var path []string
  	kv := reflect.ValueOf(key)
  	if kv.Kind() == reflect.String {
  		path = strings.Split(strings.Trim(kv.String(), "."), ".")
  	}
  
  	switch seqv.Kind() {
  	case reflect.Array, reflect.Slice:
  		return ns.checkWhereArray(seqv, kv, mv, path, op)
  	case reflect.Map:
  		return ns.checkWhereMap(seqv, kv, mv, path, op)
  	default:
  		return nil, fmt.Errorf("can't iterate over %v", seq)
  	}
  }
docs: // Where returns a filtered subset of a given data type.