Neo4j 不对称关系
Posted
技术标签:
【中文标题】Neo4j 不对称关系【英文标题】:Neo4j Asymetric Relationships 【发布时间】:2022-01-06 10:43:42 【问题描述】:有没有办法在 Neo4j 中建立不对称关系?
需要有不同的成本,具体取决于路径在两个节点之间遍历的方向。
【问题讨论】:
【参考方案1】:这样做的首选方法是在相同的两个节点之间创建两条相反方向的边,每条边都有一个代表成本的属性。
从技术上讲,也可以在同一条边上创建两个属性,例如
(n:myLabel name:'A')-[r:MY_EDGE_TYPE cost:'A,7,B,5')->(m:myLabel name:'B')
但是从 ;) 开始看起来并不好。此外,您必须在路径上的总成本的任何成本计算中进行额外的计算。
【讨论】:
我开始倾向于类似的解决方案...感谢您确认它是有道理的!【参考方案2】:您可以根据来自的方向引用不同的属性,即:
(n1:Node)-[:EDGE in: 5, out: 3]->(n2:Node)
当您遍历从n1
到n2
的关系时,您将引用out
以获得权重3,当您从n2
转到n1
时,您将引用in
得到 5 的权重。
这对我来说似乎是一种反模式,因为您必须跟踪方向。如果可能的话,我会选择与一个属性的两个关系。
【讨论】:
这可能会奏效,但会牺牲查询的简单性...谢谢! 如果您喜欢危险的生活,那么您也可以将其存储为浮点数。整数部分的入站重量,小数部分的出站重量。但这听起来像是会在某个时候惊人地崩溃。以上是关于Neo4j 不对称关系的主要内容,如果未能解决你的问题,请参考以下文章