Neo4j 不对称关系

Neo4j Asymetric Relationships

有没有办法在 Neo4j 中建立不对称关系?

根据路径在两个节点之间的遍历方向,需要有不同的成本。

执行此操作的首选方法是在相同的两个节点之间创建两条边,方向相反,每条边用 属性 表示成本。

从技术上讲,也可以在同一条边上创建两个属性,例如

(n:myLabel {name:'A'})-[r:MY_EDGE_TYPE {cost:'A,7,B,5'})->(m:myLabel {name:'B'})

但是开始看起来不太好 ;)。此外,您必须在路径上的总成本的任何成本计算中进行额外计算。

您可以根据您来自哪个方向来引用不同的属性,即:

(n1:Node)-[:EDGE {in: 5, out: 3}]->(n2:Node)

当您遍历从 n1n2 的关系时,您将引用 out 以获得权​​重 3,而当您从 n2 开始时对于 n1,您将引用 in 以获得权​​重 5。

这对我来说似乎是一种反模式,因为您必须跟踪方向。如果可能的话,我会选择两种关系与一种 属性。