33

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

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

而不是:

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

提前致谢 :)

4

2 回答 2

43

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

有少量的解决方法。

  • 首先,正如您所建议的,我们可以有两种关系,一种从 A 到 B,另一种从 B 到 A。

  • 或者,在编写 MATCH 查询时,我们可以指定无方向匹配模式,方法是使用查询,例如

    MATCH (A)-[FRIEND]-(B) RETURN A, B
    

    它不会关心 A 与 B 是否是朋友,反之亦然,并允许我们在建立关系时任意选择一个方向。

于 2014-06-03T09:08:19.100 回答
19

根据这篇文章:在 Neo4j 中建模数据:双向关系

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

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

引擎能够在任一方向穿越边缘。创建反方向边缘是不必要的,只会浪费空间和遍历时间。

于 2015-03-10T20:06:28.150 回答