code: func (ns *Namespace) checkWhereArray(seqv, kv, mv reflect.Value, path []string, op string) (interface{}, error) {
  	rv := reflect.MakeSlice(seqv.Type(), 0, 0)
  	for i := 0; i < seqv.Len(); i++ {
  		var vvv reflect.Value
  		rvv := seqv.Index(i)
  		if kv.Kind() == reflect.String {
  			vvv = rvv
  			for _, elemName := range path {
  				var err error
  				vvv, err = evaluateSubElem(vvv, elemName)
  				if err != nil {
  					continue
  				}
  			}
  		} else {
  			vv, _ := indirect(rvv)
  			if vv.Kind() == reflect.Map && kv.Type().AssignableTo(vv.Type().Key()) {
  				vvv = vv.MapIndex(kv)
  			}
  		}
  
  		if ok, err := ns.checkCondition(vvv, mv, op); ok {
  			rv = reflect.Append(rv, rvv)
  		} else if err != nil {
  			return nil, err
  		}
  	}
  	return rv.Interface(), nil
  }
docs: // checkWhereArray handles the where-matching logic when the seqv value is an
  // Array or Slice.