Neo4j创建一些节点有多个关系的图

时间:2018-01-18 00:57:07

标签: neo4j

在我的Neo4j上我想创建这个图:

enter image description here

所以我尝试用以下方法创建一些节点和关系:

MERGE (D:POINT {NAME:'d'})<-[:LINKS]-(A:POINT {NAME:'a'})-[:LINKS]->(B:POINT {NAME:'b'})-[:LINKS]->(C:POINT {NAME:'c'})

但我无法了解如何创建DB点之间的关系,我也无法了解如何将AC联系起来。

你有什么想法怎么做?

3 个答案:

答案 0 :(得分:1)

为了避免无意中创建重复的节点和/或关系,您必须在各个节点和关系上调用MERGE

引用dev manual

  

在完整模式上使用MERGE时,行为就是   整个模式匹配,或创建整个模式。 MERGE不会   部分使用现有的模式 - 它是全有或全无。如果偏   需要匹配,这可以通过拆分模式来完成   进入多个MERGE条款。

例如,要正确创建没有任何重复节点或关系的图形,请执行以下操作:

MERGE (A:POINT {NAME:'a'})
MERGE (B:POINT {NAME:'b'})
MERGE (C:POINT {NAME:'c'})
MERGE (D:POINT {NAME:'d'})
MERGE (A)-[:LINKS]->(B)
MERGE (A)-[:LINKS]->(C)
MERGE (A)-[:LINKS]->(D)
MERGE (B)-[:LINKS]->(C)
MERGE (D)-[:LINKS]->(B)

答案 1 :(得分:1)

CREATE似乎是我创建节点和关系的自然方式。

CREATE (D:POINT {NAME:'d'})<-[:LINKS]-(A:POINT {NAME:'a'})
   , (A)-[:LINKS]->(B:POINT {NAME:'b'})<-[:LINKS]-(D)
   , (B)-[:LINKS]->(C:POINT {NAME:'c'})<-[:LINKS]-(A)

答案 2 :(得分:0)

您可以在MATCH之前执行MERGE,例如。对于AD之间的关系,请执行:

MATCH (A:POINT {NAME:'a'}),(B:POINT {NAME:'d'}) MERGE (A)-[:LINKS]->(B)