【发布时间】:2022-01-06 10:43:42
【问题描述】:
有没有办法在 Neo4j 中建立不对称关系?
需要有不同的成本,具体取决于路径在两个节点之间遍历的方向。
【问题讨论】:
标签: neo4j graph-databases
有没有办法在 Neo4j 中建立不对称关系?
需要有不同的成本,具体取决于路径在两个节点之间遍历的方向。
【问题讨论】:
标签: neo4j graph-databases
这样做的首选方法是在相同的两个节点之间创建两条相反方向的边,每条边都有一个代表成本的属性。
从技术上讲,也可以在同一条边上创建两个属性,例如
(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)
当您遍历从n1 到n2 的关系时,您将引用out 以获得权重3,当您从n2 转到n1 时,您将引用in得到 5 的权重。
这对我来说似乎是一种反模式,因为您必须跟踪方向。如果可能的话,我会选择与一个属性的两个关系。
【讨论】: