我有一个空的neo4j数据库。我希望城市{val:" new york"}节点只有一个实例,而不是两个。创建这些节点和关系的正确方法是什么,以便john和sam指向同一个城市{val:" new york"}节点?
{{1}}
我导入的数据位于csv文件中。我需要一些方法来创建城市,如果它尚不存在。我试图用MERGE替换CREATE,但语法不清楚。
答案 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/