Neo4j双向关系

时间:2014-06-03 08:54:45

标签: neo4j cypher relationship bidirectional-relation

有没有办法使用Cypher在Neo4j中创建双向关系?我希望这种关系是双向的,而不是在两个方向上形成两个单向关系,例如:

(A)<-[FRIEND]->(B)

而不是:

(A)-[FRIEND]->(B)
(A)<-[FRIEND]-(B)

提前致谢:)

2 个答案:

答案 0 :(得分:25)

不,没有。 neo4j中的所有关系都有一个方向,从给定节点开始和结束。

有一些解决方法。

  • 首先,正如你所说,我们可以有两种关系,一种是从A到B,另一种是从B到A.

  • 或者,在编写我们的MATCH查询时,我们可以通过使用诸如

    之类的查询指定无方向匹配模式
    MATCH (A)-[FRIEND]-(B) RETURN A, B
    

    不关心A是否是B的朋友,反之亦然,并允许我们在创建关系时任意选择方向。

答案 1 :(得分:14)

根据这篇文章:Modeling Data in Neo4j: Bidirectional Relationships

更好的选择是在任意方向创建关系,而不是在查询时指定方向:

MATCH (neo)-[:PARTNER]-(partner)

发动机能够沿任一方向穿过边缘。创建反方向边缘是不必要的,仅用于浪费空间和遍历时间。