Neo4j:多重关系合并问题

时间:2016-02-02 17:12:20

标签: neo4j cypher py2neo

我有一个neo4j架构,其中我有3个节点。例如P,B,C

我想写一个合并查询,以便

MERGE (p)-[:has_b]->(b),
MERGE (p)-[:has_c]->(c1),
MERGE (p)-[:has_c]->(c2)

其中c1和c2是具有不同属性值的c节点的实例。

即。合并所有三种关系。

如果3个合并查询中的任何一个创建了新节点,则所有关系都应使用新创建的p节点。

如果我只使用

两个关系,我可以实现这个目标
(c)<-[:has_c]-MERGE (p)-[:has_b]->(b)

如何在3个关系中做任何建议吗?

仅供参考,我使用的py2neo根本没用。

1 个答案:

答案 0 :(得分:1)

节点没有实例。节点是一个节点,它有一个标签。

您可以先MERGE您的节点确保它们存在,并且所有关系都使用相同的p

MERGE (p:LabelA {k: "v"})
MERGE (b:LabelB {k: "v"})
MERGE (c1:LabelC {k: "v"})
MERGE (c2:LabelC {k: "v"})
MERGE (p)-[:has_b]->(b)
MERGE (p)-[:has_c]->(c1)
MERGE (p)-[:has_c]->(c2)

这将只创建一次节点和关系。