package coperator import "errors" func operatorAnd(doc *Document, filter Filter, key string, value interface{}) (bool, error) { vfilter, ok := filter.([]interface{}) if !ok { return false, errors.New("filter must be a slice") } for _, v := range vfilter { ret, err := DocumentOperator(doc, v.(Filter), "", nil) if !ret { return ret, err } } return true, nil } func operatorOr(doc *Document, filter Filter, key string, value interface{}) (bool, error) { vfilter, ok := filter.([]interface{}) if !ok { return false, errors.New("filter must be a slice") } for _, v := range vfilter { ret, err := DocumentOperator(doc, v.(Filter), "", nil) if err != nil { return false, err } if ret { return ret, err } } return false, nil } func operatorNor(doc *Document, filter Filter, key string, value interface{}) (bool, error) { vfilter, ok := filter.([]interface{}) if !ok { return false, errors.New("filter must be a slice") } for _, v := range vfilter { ret, err := DocumentOperator(doc, v.(Filter), "", nil) if err != nil { return false, err } if ret { return false, nil } } return true, nil }