作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 Neo4j 中有一个图形模型,只有一个关系,如下所示:
(node1)-[:CONNECTS]->(node2)
已尝试以下查询,但它会给我双向结果:
MATCH (n:Label1)-[r:CONNECTS*1..]-(m)
WHERE n.name = 'startNodeString'
RETURN n,r,m
以下查询将仅返回给定根节点的第一级子节点:
MATCH (cs:Label1)-[r:CONNECTS*]->(es:Label2)
WHERE cs.property = 'startNodeString'
RETURN cs,es,r
我想捕获从根节点开始遍历每个子节点并递归每个子节点直到每个级别的深度,即“n”级。
感谢您在密码查询方面的帮助。
最佳答案
您需要APOC Procedures为此,特别是 path expander .
这是一个使用示例:
MATCH (cs:Label1)
WHERE cs.property = 'startNodeString'
CALL apoc.path.expandConfig(cs,{relationshipFilter:"CONNECTS>",maxLevel:3,uniqueness:"NODE_GLOBAL"}) YIELD path
WITH cs, RELATIONSHIPS(path) as r, LAST(NODES(path)) as es
WHERE es:Label2
RETURN cs,es,r
所有路径扩展器调用默认使用 bfs。 NODE_GLOBAL
唯一性意味着节点只被遍历一次。您可以将 maxLevel
设置为您想要的任何深度限制,或完全忽略它。
关于Neo4j:如何在图中的节点的广度优先搜索中进行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41992647/
我是一名优秀的程序员,十分优秀!