我想编写一个查询,该查询仅返回到另一节点具有多个路径的节点。 (仅显示到其他任何节点的冗余路径 /仅显示循环的子图)
这是使用使用Neo4j db的BloodHoundAD的示例。
例如,此查询返回从具有嵌套“ MemberOf”关系的用户到组的所有路径。
MATCH p =(u:User)-[r:MemberOf * 4..8]->(g:Group)返回p
如何以仅显示冗余路径的方式对此进行查询?
为了说明这一点,我附加了一张图片。在这里,我想舍弃以蓝色圈出的路径,而仅显示冗余路径(以红色圈出)
答案 0 :(得分:0)
冗余路径意味着到同一节点的路径不止一个,因此您将针对起始节点和结束节点收集路径,并进行过滤以将行保留在列表中存在多个路径的地方:
MATCH p=(u:User)-[:MemberOf*4..8]->(g:Group)
WITH u, g, collect(p) as paths
WHERE size(paths) > 1
RETURN u, g, paths