【问题标题】:Remove bidirectional relations in neo4j删除 neo4j 中的双向关系
【发布时间】:2016-10-12 16:03:54
【问题描述】:

如何去除相同标签的两个节点之间的双向关系,使其成为这两个节点之间的单一关系,而与方向无关。

例如:

(a:Label1)-[r]->(b:Label1) && (b:Label1)-[r]->(a:Label1)

我需要的是a-[r]->b 或b-[r]->a

如果我使用这个:

 MATCH (a:Label1)-[r]->(b:Label1)

它正在删除所有关系。

是因为同一个标签吗?

【问题讨论】:

    标签: neo4j cypher


    【解决方案1】:

    使用collect和tail函数:

    MATCH (a:Label1)-[r]-(b:Label1)
    WITH a, b, collect(r) as rels
    UNWIND tail(rels) as rel
    DELETE rel
    

    【讨论】:

    • tail 给出集合的第一个元素,如果我在某些 x 和 y 之间有一些额外的单一关系怎么办
    • @chikku 在这种情况下,您需要给我们一个更正式的bidirectional relationship 定义。 PS tail 删除集合的第一个元素。
    猜你喜欢
    • 2016-09-10
    • 2014-07-23
    • 2023-03-13
    • 2011-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-25
    相关资源
    最近更新 更多