Most efficient way to create a large number of relationships with UNWIND & call apoc.when?


I'm new to Neo4J Cypher.
I need to write a query, where will be create relationships between nodes by these rules:
Each node has a referenced_urls property described like this:


For each source node found & each referenced_urls value of this node, if the target node exists then create the relationships.

I wrote this Cypher request :

MATCH path = (n:F4b1_com)
UNWIND NODES(path) AS source
  UNWIND apoc.convert.fromJsonList(source.referenced_urls) AS referenced_urls
    CALL apoc.when(referenced_urls.follow = true, 
    "MATCH (target:F4b1_com {url: href}) RETURN target",
    {href:referenced_urls.href}) YIELD value
    WITH source, AS target
  WITH source REMOVE source.referenced_urls

I can have about 50 000 nodes and 1000 referenced_urls value per node.
I'm not sure that's the efficient way

What would you advise me as optimizations?