gpt4 book ai didi

Neo4j:如何在图中的节点的广度优先搜索中进行查询

转载 作者:行者123 更新时间:2023-12-02 20:51:46 43 4
gpt4 key购买 nike

我在 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/

43 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com