【问题标题】:Querying single relationship from a bidirectional relationship in Neo4j从 Neo4j 中的双向关系查询单个关系
【发布时间】:2023-03-13 23:04:01
【问题描述】:

是否可以从双向关系中只显示一个方向关系?

(n)-[:EMAIL_LINK]->(m)

(n)

【问题讨论】:

  • 在浏览器中不可以。但是,如果您升级到 2.2M04,浏览器会以更好的方式显示它们,并带有弯曲的边缘。
  • 是否可以消除cyper结果集中两个节点之间的冗余关系?我的意思是隐藏或不显示在结果集中。 14 --> 41 , 41 --> 14 , 62 --> 41 , 62 --> 14 如您所见,节点(14)与节点(41)直接相关,节点(41)与节点(14)直接相关。我只想展示任何方向的唯一节点关系。 14 --> 41 , 62 --> 41 , 62 --> 1441 --> 14 , 62 --> 41 , 62 --> 14

标签: neo4j bidirectional-relation


【解决方案1】:

如果所讨论的关系类型没有方向语义,最佳做法是在图中只显示一次并在查询时省略方向,即(a)-[:EMAIL_LINK]-(b) 而不是(a)-[:EMAIL_LINK]->(b)

要摆脱不同方向的重复关系,请使用:

MATCH (a)-[r1:EMAIL_LINK]->(b)<-[r2:EMAIL_LINK]-(a)
WHERE ID(a)<ID(b)
DELETE r2

如果您的图表很大,您需要通过添加LIMIT 并多次运行查询直到全部处理完毕,从而确保交易规模合理。

注意:WHERE ID(a)&lt;ID(b) 是必需的。否则ab 可能会在以后的迭代中改变角色。因此,r1r2 也会改变角色并且都被删除。

【讨论】:

    猜你喜欢
    • 2014-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-05
    • 1970-01-01
    相关资源
    最近更新 更多