neo4j中节点A和节点B有多条关系,识别A和B的方向,若方向相同,且type相同,则将关系属性time值最大的关系保留,其他关系删掉
时间: 2024-01-30 08:02:13 浏览: 68
python 实现查询Neo4j多节点的多层关系
你可以使用Cypher查询语言来实现这个需求。具体的查询语句如下:
```
MATCH (A)-[r1]->(B)<-[r2]-(A)
WHERE type(r1) = type(r2) AND id(A) < id(B)
WITH A, B, collect(case when id(r1) < id(r2) then r1 else r2 end) as rels
UNWIND rels as r
WITH A, B, r, max(r.time) as max_time
WHERE r.time < max_time
DELETE r
```
这个查询语句的具体步骤如下:
1. 使用MATCH语句找到节点A和节点B之间的所有关系,并且这些关系的类型相同。
2. 使用WITH语句将节点A、节点B和这些关系的集合传递到下一步。
3. 使用UNWIND语句将关系集合展开为单个关系,并且对每个关系计算出最大的time值。
4. 使用WHERE语句筛选掉time值最大的关系之外的其他关系。
5. 使用DELETE语句删除掉筛选出的其他关系。
阅读全文