diff --git a/pkg/expr/mongo.go b/pkg/expr/mongo.go
index 70bd6f05e6f3e5c422c88e193a7e1621eaa2f9e6..989454178f640144791a9e6fd84d39317fd1e283 100644
--- a/pkg/expr/mongo.go
+++ b/pkg/expr/mongo.go
@@ -57,16 +57,11 @@ func convertToMongo(ctx context.Context, tree *parser.Tree, env map[string]inter
 	}
 
 	c := &compiler{tree: tree, env: env, config: config, identifierRenameFn: identifierRenameFn}
-	v := c.compile(tree.Node)
-	switch e := v.(type) {
-	case bson.M:
-		b = e
-	case string:
-		b = bson.M{"$text": bson.M{"$search": e}}
-	default:
-		err = fmt.Errorf("invalid expression")
+	v, ok := c.compile(tree.Node).(bson.M)
+	if !ok || v == nil {
+		return nil, fmt.Errorf("invalid expression")
 	}
-	return
+	return v, nil
 }
 
 type compiler struct {
diff --git a/pkg/expr/mongo_test.go b/pkg/expr/mongo_test.go
index 46f92b551086ae7ad1d5336f35c98d3154b4253d..75ec627c124cc0a24768d3cec30a4eac0ae34c15 100644
--- a/pkg/expr/mongo_test.go
+++ b/pkg/expr/mongo_test.go
@@ -50,10 +50,15 @@ func TestConvertToMongo(t *testing.T) {
 		{"time", fmt.Sprintf("d > Time.Time('%s')", now.Format(time.RFC3339)), nil, bson.M{"d": bson.M{"$gt": tm}}, false},
 		{"in", "In(s, [1,2,3])", nil, bson.M{"s": bson.M{"$in": []interface{}{1, 2, 3}}}, false},
 		{"in", "In(s, 1)", nil, bson.M{"s": bson.M{"$in": []interface{}{1}}}, false},
+		{"text search or id", "id", nil, nil, true},
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
 			gotB, err := ConvertToMongo(ctx, tt.eval, tt.env, nil)
+			if tt.wantErr {
+				require.Error(t, err)
+				return
+			}
 			require.NoError(t, err)
 			assert.Equal(t, tt.wantB, gotB)
 		})
@@ -72,7 +77,7 @@ func BenchmarkConvertToMongo(b *testing.B) {
 	//fmt.Println(len(exp))
 
 	for i := 0; i < b.N; i++ {
-		ConvertToMongo(ctx, exp, nil, nil, expr.Patch(&testVisitor{}))
+		_, _ = ConvertToMongo(ctx, exp, nil, nil, expr.Patch(&testVisitor{}))
 	}
 }
 
diff --git a/pkg/items/service.go b/pkg/items/service.go
index 6a550dd0ad642f2dd1e02f7966b5963bf2147979..1f4f2867ebfc78ef5bc32bc68c4cd9371acd84bb 100644
--- a/pkg/items/service.go
+++ b/pkg/items/service.go
@@ -52,8 +52,9 @@ type PreSaver interface {
 }
 
 type Filter struct {
-	ID     []string
-	Data   []*filter.Filter
+	ID   []string
+	Data []*filter.Filter
+	// DEPRECATED Use Q instead
 	Search string // Поиск, одновременно поддерживается только один запрос
 	Q      []string
 }