gpt4 book ai didi

Neo4j - 如何根据属性删除重复的关系

转载 作者:行者123 更新时间:2023-12-04 10:46:56 28 4
gpt4 key购买 nike

我有节点之间存在多个关系。
每个关系都有两个属性 p1 和 p2。
只有当属性 p1 和 p2 具有相同的值时,关系才是重复的。

MATCH (a:Node)-[r1:Rel]->(b:Node)
MATCH (a:Node)-[r2:Rel]->(b:Node)
WHERE ((r1.p1 = r2.p1) AND (r1.p2 = r2.p2))
WITH a,b, TAIL(collect(r1)) AS coll
FOREACH (x in coll| DELETE x)

这不会产生预期的结果。
上面的代码删除了所有,除了第一个关系。
Tail 删除除第一个之外的所有内容,这似乎是这样做的。然而,它没有考虑属性。
如何删除重复的关系并考虑它们的属性?

最佳答案

这应该有效:

MATCH (a:Node)-[r:Rel]->(b:Node)
WITH a, b, r.p1 AS p1, r.p2 AS p2, COLLECT(r)[1..] AS unwanted
FOREACH(x IN unwanted | DELETE x)

每对 Node s,它使用 aggregation收集具有相同 p1 相同方向的所有关系和 p2值,然后删除除一个之外的所有值。
[1..] list 操作与 TAIL 的作用基本相同。功能。

关于Neo4j - 如何根据属性删除重复的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59660075/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com