diff --git a/pkg/expr/expr_test.go b/pkg/expr/expr_test.go index 7ae9d7e8b6276da558565b8bd30ebc629bfa32f0..35153da271daace9f9acb6c7a02411f948f47054 100644 --- a/pkg/expr/expr_test.go +++ b/pkg/expr/expr_test.go @@ -41,15 +41,6 @@ func TestIsExpression(t *testing.T) { {"time", fmt.Sprintf("d > Time.Time('%s')", now.Format(time.RFC3339)), true}, {"in", "In(s, [1,2,3])", true}, {"in", "In(s, 1)", true}, - {"exists#1", "exists(s)", true}, - {"exists#2", "exists", false}, - {"len#1", "len(s) == 1", true}, - {"len#2", "len(s) != 1", true}, - {"len#3", "len(s) > 1", true}, - {"len#4", "len(s) >= 1", true}, - {"len#5", "len(s) < 1", true}, - {"len#6", "len(s) <= 1", true}, - {"len#7", "len", false}, {"text search or id", "id", false}, {"numbers", "3", false}, } diff --git a/pkg/expr/mongo.go b/pkg/expr/mongo.go index a6a147d19479b408bdb91fc0872f2fc85942b6d6..f856311d2f2856e5218260ba1fb8d6a58c457e0e 100644 --- a/pkg/expr/mongo.go +++ b/pkg/expr/mongo.go @@ -414,10 +414,7 @@ func (c *compiler) CallNode(node *ast.CallNode) interface{} { panic("exists() expects exactly 1 argument") } field := c.identifier(node.Arguments[0]) - return bson.M{"$or": bson.A{ - bson.M{field: bson.M{"$exists": true, "$type": "array"}}, - bson.M{field: bson.M{"$ne": nil}}, - }} + return bson.M{field: bson.M{"$exists": true}} case "icontains": v := c.identifier(node.Arguments[0]) diff --git a/pkg/expr/mongo_test.go b/pkg/expr/mongo_test.go index fe9b9cdcf6e007a8c56aec1e32d96dfe18f32110..6420579ccd5eb013525ec20d34874e528974812c 100644 --- a/pkg/expr/mongo_test.go +++ b/pkg/expr/mongo_test.go @@ -30,7 +30,7 @@ func TestConvertToMongo(t *testing.T) { {"equal", "s == 3", nil, bson.M{"s": 3}, false}, {"in array", "s in [1,2,3]", nil, bson.M{"s": bson.M{"$in": []interface{}{1, 2, 3}}}, false}, {"not in array", "s not in [1,2,3]", nil, bson.M{"s": bson.M{"$nin": []interface{}{1, 2, 3}}}, false}, - {"exists#1", "exists(s)", nil, bson.M{"$or": bson.A{bson.M{"s": bson.M{"$exists": true, "$type": "array"}}, bson.M{"s": bson.M{"$ne": nil}}}}, false}, + {"exists#1", "exists(s)", nil, bson.M{"s": bson.M{"$exists": true}}, false}, {"exists#2", "exists(s, s)", nil, nil, true}, {"len#1", "len(s)", nil, nil, true}, {"len#2", "len(s) <> 1", nil, nil, true},