在使用cypher将节点链接到Neo4j中的新节点之前,如何检查节点是否已经存在
我是Neo4j和cypher方面的新手,希望得到一些解决问题的帮助。我们将不胜感激 这是我的问题: 我创建了两个节点,一个作为用户,一个作为城市,链接到用户 图形设置在使用cypher将节点链接到Neo4j中的新节点之前,如何检查节点是否已经存在,neo4j,cypher,relationship,nodes,Neo4j,Cypher,Relationship,Nodes,我是Neo4j和cypher方面的新手,希望得到一些解决问题的帮助。我们将不胜感激 这是我的问题: 我创建了两个节点,一个作为用户,一个作为城市,链接到用户 图形设置 CREATE (n:User{firstName : "John", lastName : "Doe"}); MATCH (user:User{firstName : "John", lastName : "Doe"}) Return user; 查询: MATCH (user:User) WHERE user.firstNa
CREATE (n:User{firstName : "John", lastName : "Doe"});
MATCH (user:User{firstName : "John", lastName : "Doe"})
Return user;
查询:
MATCH (user:User)
WHERE user.firstName = "John"
CREATE (city:City { cityName:"Liverpool", areaCode:"34343" })
CREATE (user)-[:STUDY_IN]->(city);
现在我想创建一个新节点(用户),并将该用户链接到现有节点(城市:利物浦)
我是这样做的:
MATCH (city:City)
WHERE city.cityName = "Liverpool"
CREATE (user:User { firstName : "Kent", lastName : "Clark" })
CREATE (user)-[:STUDY_IN]->(city);
在现实生活中,我需要在创建关系之前检查城市是否存在,如果它不存在,那么我想为该城市创建一个新节点
您可以在此处看到我的代码:
使用
MERGE
命令,如果某个模式存在,则该命令将匹配该模式;如果该模式不存在,则创建该模式
CREATE (user:User{firstName: "Kent", lastName: "Clark"})
MERGE (city:City{cityName: "Liverpool"})
CREATE (user)-[:STUDY_IN]->(city)
RETURN user, city
您还可以将创建时的和匹配时的与合并时的一起使用。例如:
MERGE (city:City{cityName: "Manchester"})
ON CREATE SET city.foo = "bar"
ON MATCH SET city.baz = "qux"
在本例中,如果城市不存在,将创建城市,并且属性foo
设置为“bar”
。如果它已经存在,则属性baz
将设置为“qux”
要更深入地了解MERGE
您是否看到了CypherMERGE
的ON MATCH
和ON CREATE
子句?我使用了第一个建议,它解决了我的问题。Thx@stephenmuss