如何在neo4j中找到第二级连接?

时间:2015-04-21 06:24:01

标签: neo4j

我的neo4j图表如下所示..
300 连接 100 100 连接 201 400 。<登记/> 我想找出neo4j中的第二级连接。 例如: 300 的第二级节点应该返回 201 400
neo4j有可能吗?

enter image description here

enter image description here

当我使用下面的密码查询时:

  

MATCH(n) - [:CALLED * 2] - (结果)WHERE n.name =&#39; 300&#39;返回结果
  它应该只给我201和400,但它返回如下

enter image description here

1 个答案:

答案 0 :(得分:6)

这在Neo4j中很容易。如果你正在使用Cypher,它可能是这样的:

MATCH (n)-[:CALLED]-()-[:CALLED]-(result)
WHERE n.id = 300
RETURN result

我在这里假设id属性是持有识别号的东西,但显然你可以改变它。

你甚至可以做这样的可变长度路径:

MATCH (n)-[:CALLED*2]-(result)
WHERE n.id = 300
RETURN result

这里的部分问题是,这将返回节点#200。一个适合您要查找的结果的查询是:

MATCH (n)-[:CALLED]->()<-[:CALLED]-(result)
WHERE n.id = 300
RETURN result

仅在中间节点具有指向它的关系的情况下匹配。