2017-07-03 127 views
0

我使用neo4j作为图数据库,我想从该节点的邻居节点和所有相关的邻居返回深度从1到3不等。我正在做这个但它会卡住: 请注意,它是一个大图。Neo4j图深度遍历Cypher

start n = node(*) where n.NID contains "9606.ENS3" 
MATCH (n)-[Rel1*1..3]-(m) RETURN m; 

任何人都有线索如何遍历图上,并得到结果?

+0

什么Neo4j的版本是您使用?你遇到了什么错误? –

+0

我正在使用3.2.1社区 –

回答

1

您的问题显示一个旧的Cypher语法。关于START子句的docs表示:

START子句只能在访问旧版索引时使用。在 所有其他情况下,请使用MATCH(请参见第3.3.1节“MATCH”)。

我认为这应该工作:

MATCH(n)-[Rel1*1..3]->(m) 
WHERE n.NID contains "9606.ENS3" 
RETURN m 
+0

任何线索都可以优化,因为它是大型数据集?浏览器错误 –

+0

您可以尝试在'n'和'm'节点(例如'MATCH(n:NodeTypeA) - [Rel1 * 1..3] - >(m:NodeTypeB)'')中指定已知标签。在n.NID属性中创建一个索引也是一个好主意。 –

+0

已经创建了一个唯一的约束,并添加标签使其成为bug –