我想编写一个查询,只返回具有多个路径到另一个节点的节点。 (仅显示指向任何其他节点的冗余路径/仅显示循环的子图)
这是使用使用Neo4j数据库的BloodHoundAD的一个例子。
例如,此查询将返回与具有嵌套“MemberOf”关系的用户的所有路径。
MATCH p =(u:User) - [r:MemberOf * 4..8] - >(g:Group)RETURN p
我怎么能以只显示冗余路径的方式查询?
为了说明这一点,我附上了一张图片。在这里,我想丢弃用蓝色圈出的路径,只显示冗余路径(用红色圈出)
冗余路径意味着同一节点有多条路径,因此您将收集相对于起始节点和结束节点的路径,并过滤以保留列表中有多个路径的行:
MATCH p=(u:User)-[:MemberOf*4..8]->(g:Group)
WITH u, g, collect(p) as paths
WHERE size(paths) > 1
RETURN u, g, paths