我的neo4j图表如下所示..
300 连接 100 , 100 连接 201 和 400 。<登记/>
我想找出neo4j中的第二级连接。
例如: 300 的第二级节点应该返回 201 和 400
neo4j有可能吗?
当我使用下面的密码查询时:
MATCH(n) - [:CALLED * 2] - (结果)WHERE n.name =&#39; 300&#39;返回结果
它应该只给我201和400,但它返回如下
答案 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
仅在中间节点具有指向它的关系的情况下匹配。