创建指向同一城市的节点/关系

时间:2017-11-29 23:13:00

标签: neo4j cypher

我有一个空的neo4j数据库。我希望城市{val:" new york"}节点只有一个实例,而不是两个。创建这些节点和关系的正确方法是什么,以便john和sam指向同一个城市{val:" new york"}节点?

{{1}}

我导入的数据位于csv文件中。我需要一些方法来创建城市,如果它尚不存在。我试图用MERGE替换CREATE,但语法不清楚。

2 个答案:

答案 0 :(得分:2)

更简单(更安全,因为您并不总是知道数据是否已经存在),只有在可能有重复尝试创建您想要独特的数据的情况下才始终使用MERGE

这两个Cypher语句块不会创建重复的节点/关系,即使您颠倒顺序(或者DB已经有一些相同的数据)。

MERGE (p:person{name:"john"})
MERGE (c:city{val:"new york"})
MERGE (p)-[:LIVES_IN]->(c);

MERGE (p:person{name:"sam"})
MERGE (c:city{val:"new york"})
MERGE (p)-[:LIVES_IN]->(c);

答案 1 :(得分:0)

回答我自己的问题。每一行都需要自己的MERGE子句。

CREATE
(p:person{name:"john"}),
(c:city{val:"new york"}),
(p)-[:LIVES_IN]->(c)

MERGE (p:person{name:"sam"})
MERGE (c:city{val:"new york"})
MERGE (p)-[:LIVES_IN]->(c)

良好的相关资源...... https://neo4j.com/blog/common-confusions-cypher/