neo4j - 仅将具有多个(冗余)路径的节点返回到 Neo4j(Cypher)中的不同节点
问题描述
我想编写一个查询,它只返回具有多个到另一个节点的路径的节点。(仅显示到任何其他节点的冗余路径/仅显示循环子图)
这是使用 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
推荐阅读
- angularjs - 单击元素不适用于量角器中的每个场景
- datetime - ZonedDateTime 解析为 ZonedDateTime 的另一种格式
- docker - docker中的jenkins无法在主机中执行
- outlook - 使用 office js 获取约会对象的 iCalUId
- segmentation-fault - 为什么我在 Qt creator/designer 中的这行代码上出现 Seg Fault?
- python - 如果我使用 pandas .to_excel,如何将工作表分配给变量?
- jquery - 数据表:如何为“列可见性”按钮创建下拉列表?
- sql - 修剪字符
- javascript - 如何将回调添加到 Chrome 打开外部应用程序弹出窗口?
- java - 在接口中,我首先声明一个扩展接口的泛型,然后声明一个泛型,将第一个泛型与另一个接口一起扩展