diff --git a/pkg/expr/mongo.go b/pkg/expr/mongo.go index 02075dc49aad8ebc8cacd5fe62015bd1be9e28fa..70bd6f05e6f3e5c422c88e193a7e1621eaa2f9e6 100644 --- a/pkg/expr/mongo.go +++ b/pkg/expr/mongo.go @@ -388,7 +388,7 @@ func (c *compiler) FunctionNode(node *ast.FunctionNode) interface{} { } return bson.M{ - v: bson.M{"$near": bson.D{{"$geometry", map[string]interface{}{"type": "Point", "coordinates": point}}, {"$maxDistance", distance}}}, + v: bson.M{"$near": bson.D{{Key: "$geometry", Value: map[string]interface{}{"type": "Point", "coordinates": point}}, {Key: "$maxDistance", Value: distance}}}, } case "within": v := c.identifier(node.Arguments[0]) diff --git a/pkg/expr/mongo_test.go b/pkg/expr/mongo_test.go index 26526945bc72d366aa5da64ea4c5e518e558d164..46f92b551086ae7ad1d5336f35c98d3154b4253d 100644 --- a/pkg/expr/mongo_test.go +++ b/pkg/expr/mongo_test.go @@ -44,7 +44,7 @@ func TestConvertToMongo(t *testing.T) { {"or", "s==2 || s > 10", nil, bson.M{"$or": bson.A{bson.M{"s": 2}, bson.M{"s": bson.M{"$gt": 10}}}}, false}, {"search", "search('some') || s > 10", nil, bson.M{"$or": bson.A{bson.M{"$text": bson.M{"$search": "some"}}, bson.M{"s": bson.M{"$gt": 10}}}}, false}, {"vars:or", "s== a + 2 || s > a + 10", map[string]interface{}{"a": 100}, bson.M{"$or": bson.A{bson.M{"s": 102}, bson.M{"s": bson.M{"$gt": 110}}}}, false}, - {"near", "near(a, [55.5, 37.5], 1000)", map[string]interface{}{"a": []interface{}{55, 37}}, bson.M{"a.geometry": bson.M{"$near": bson.D{{"$geometry", map[string]interface{}{"coordinates": []interface{}{55.5, 37.5}, "type": "Point"}}, {"$maxDistance", 1000}}}}, false}, + {"near", "near(a, [55.5, 37.5], 1000)", map[string]interface{}{"a": []interface{}{55, 37}}, bson.M{"a.geometry": bson.M{"$near": bson.D{{Key: "$geometry", Value: map[string]interface{}{"coordinates": []interface{}{55.5, 37.5}, "type": "Point"}}, {Key: "$maxDistance", Value: 1000}}}}, false}, {"within", "within(a, 'box', [[54.54, 36.36], [55.55, 37.37]])", map[string]interface{}{"a": []interface{}{55, 37}}, bson.M{"a.geometry": bson.M{"$geoWithin": bson.M{"$box": []interface{}{[]interface{}{54.54, 36.36}, []interface{}{55.55, 37.37}}}}}, false}, {"time", "d > Time.Date('2021-08-31')", nil, bson.M{"d": bson.M{"$gt": dt}}, false}, {"time", fmt.Sprintf("d > Time.Time('%s')", now.Format(time.RFC3339)), nil, bson.M{"d": bson.M{"$gt": tm}}, false},