public BsonDocument visit()

in flink-connector-mongodb/src/main/java/org/apache/flink/connector/mongodb/table/MongoFilterPushDownVisitor.java [65:102]


    public BsonDocument visit(CallExpression call) {
        Bson filter = Filters.empty();
        if (BuiltInFunctionDefinitions.EQUALS.equals(call.getFunctionDefinition())) {
            filter = renderBinaryComparisonOperator("$eq", call.getResolvedChildren());
        }
        if (BuiltInFunctionDefinitions.LESS_THAN.equals(call.getFunctionDefinition())) {
            filter = renderBinaryComparisonOperator("$lt", call.getResolvedChildren());
        }
        if (BuiltInFunctionDefinitions.LESS_THAN_OR_EQUAL.equals(call.getFunctionDefinition())) {
            filter = renderBinaryComparisonOperator("$lte", call.getResolvedChildren());
        }
        if (BuiltInFunctionDefinitions.GREATER_THAN.equals(call.getFunctionDefinition())) {
            filter = renderBinaryComparisonOperator("$gt", call.getResolvedChildren());
        }
        if (BuiltInFunctionDefinitions.GREATER_THAN_OR_EQUAL.equals(call.getFunctionDefinition())) {
            filter = renderBinaryComparisonOperator("$gte", call.getResolvedChildren());
        }
        if (BuiltInFunctionDefinitions.NOT_EQUALS.equals(call.getFunctionDefinition())) {
            filter = renderBinaryComparisonOperator("$ne", call.getResolvedChildren());
        }
        if (BuiltInFunctionDefinitions.IS_NULL.equals(call.getFunctionDefinition())) {
            filter =
                    renderUnaryComparisonOperator(
                            "$eq", call.getResolvedChildren().get(0), BsonNull.VALUE);
        }
        if (BuiltInFunctionDefinitions.IS_NOT_NULL.equals(call.getFunctionDefinition())) {
            filter =
                    renderUnaryComparisonOperator(
                            "$ne", call.getResolvedChildren().get(0), BsonNull.VALUE);
        }
        if (BuiltInFunctionDefinitions.OR.equals(call.getFunctionDefinition())) {
            filter = renderLogicalOperator("$or", call.getResolvedChildren());
        }
        if (BuiltInFunctionDefinitions.AND.equals(call.getFunctionDefinition())) {
            filter = renderLogicalOperator("$and", call.getResolvedChildren());
        }
        return filter.toBsonDocument();
    }