Neo4J深度重复节点

Neo4J深度重复节点,neo4j,duplicates,Neo4j,Duplicates,对于以下数据,我的查询如下所示: MATCH p = (ob:Obiect)<--(w:Word { value:'game' })-[*]-(x) RETURN {id: id(x), value: x.value} CREATE (w0:Obiect { value : 'Obiect' }) CREATE (w1:Word { value:'game' }) CREATE (w2:Word { value:'unreal' }) CREATE (w3:Word { value:'a

对于以下数据,我的查询如下所示:

MATCH p = (ob:Obiect)<--(w:Word { value:'game' })-[*]-(x) RETURN {id: id(x), value: x.value}

CREATE (w0:Obiect { value : 'Obiect' })
CREATE (w1:Word { value:'game' })
CREATE (w2:Word { value:'unreal' })
CREATE (w3:Word { value:'a' })
CREATE (w4:Word { value:'b'})
CREATE (w5:Word { value:'c' })
CREATE (w6:Word { value:'d'})
CREATE (w1)-[:IS]->(w0)
CREATE (w2)-[:IS]->(w1)
CREATE (w3)-[:HAS]->(w2)
CREATE (w4)-[:HAS]->(w3)
CREATE (w5)-[:HAS]->(w4)
CREATE (w6)-[:HAS]->(w5)
CREATE (w6)-[:HAS]->(w3)
但是如果关系存在,那么我有重复的节点(如下)。问题是如何避免这个问题

id 4063    value unreal
id 4064    value a
id 4065    value b
id 4066    value c
id 4067    value d
id 4064    value a
id 4067    value d
id 4066    value c
id 4065    value b
id 4064    value a

您可以使用MERGE子句:

合并充当“匹配或创建”

请注意,MERGE将尝试匹配整个模式,这在第一次使用时可能会造成混淆,因此我建议您阅读Graphaware中的这篇有用的文章:

id 4063    value unreal
id 4064    value a
id 4065    value b
id 4066    value c
id 4067    value d
id 4064    value a
id 4067    value d
id 4066    value c
id 4065    value b
id 4064    value a
MERGE (w3:Word { value:'a' })
MERGE (w4:Word { value:'b'})
MERGE(w3)-[:HAS]->(w4)