从Neo4j中的双向关系查询单一关系

时间:2015-02-20 02:55:48

标签: neo4j bidirectional-relation

Overlapping bidirectional relationship

是否可以仅显示双向关系中的一个方向关系?

(N) - [:EMAIL_LINK] - GT(M)

(n)的< - [:EMAIL_LINK] - (M)

1 个答案:

答案 0 :(得分: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)<ID(b)是必要的。否则ab可能会在以后的迭代中更改角色。因此,r1r2也会更改角色,并且都会被删除。