3
votes

I have the following graph:

THe Graph

Currently I am using this QUERY to add a relationship between two nodes:

MATCH (a:Service),(b:Service)
WHERE a.service_id = 'cs2322' and b.service_id = 'ab3232'
CREATE (a)-[r:DEPENDENT_ON]->(b)
RETURN type(r)

However I dont want to have more than one relationship between any two nodes, because I want to visualise my services and the dependency between them, so I cannot have a service being two times dependent on the other.

Is there any way I can limit this to force neo4j server to throw an error if I try to create a relationship between two nodes which already have a relationship per direction with one-another?

1

1 Answers

3
votes

There is no built-in way to throw an error if you create a duplicate relationship. But that would also be a pretty expensive way to enforce such a policy.

Instead, you can use MERGE instead of CREATE to avoid creating duplicate relationships.

For example, this query will only create the DEPENDENT_ON relationship if it does not already exist; otherwise, it will just bind the existing relationship to r:

    MATCH (a:Service), (b:Service)
    WHERE a.service_id = 'cs2322' AND b.service_id = 'ab3232'
    MERGE (a)-[r:DEPENDENT_ON]->(b)
    RETURN TYPE(r)