2017-01-09 68 views
1

我有一个数据库组织在几个分层树中。 节点按数字组织。以相同数字开头的节点通过关系进行互连。例如:(5) - [连接] - (50) - [连接] - (507)...等等。我想搜索例如从第一个父节点开始的节点301:节点3我在cypher中执行此查询吗?在neo4j的分层树中搜索

回答

1

如果你想搜索来自第一个父启动特定节点,我建议以下查询:

MATCH (n {number:1})-[:CONNECT*0..]->(n1) return n, n1; 

为节点此查询搜索与财产number = 1并搜索其通过CONNECT相关的所有儿童关系。如果你要搜索特定的子节点必须更改查询是这样的:

MATCH (n {number:1})-[:CONNECT*0..]->(n1 {number:101}) return n, n1; 

*0..部分,你可以定义直到你想搜索什么深度,所以你也可以搜索深度= N与*0..n。本文档是以比赛/路径条款开始的好地方:https://neo4j.com/docs/developer-manual/current/cypher/clauses/match/

+0

非常感谢!这解决了我的问题:) –

+0

如何进行广度优先搜索? –

+0

请看看https://neo4j.com/blog/graph-search-algorithm-basics/你会发现那里有一些有用的信息。您也可以查看https://github.com/neo4j-contrib/neo4j-apoc-procedures,它具有Dijkstra算法的实现。 –