如何在 Neo4j 中找到二级连接?
how to find 2nd level of connections in neo4j?
我的 neo4j 图表如下所示..
300 连接到 100 并且 100 连接到 201 和 400.
我想找出 neo4j 中的第二级连接。
例如:300 的第 2 级节点应该 return me 201 和 400
在neo4j中可以吗?
当我使用以下密码查询时:
MATCH (n)-[:CALLED*2]-(result) WHERE n.name = '300' RETURN result
It should give me only 201 and 400 ,but it return like below
这在 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
这里的部分问题是,这将 return 节点 #200。符合您查找结果的一个查询是:
MATCH (n)-[:CALLED]->()<-[:CALLED]-(result)
WHERE n.id = 300
RETURN result
这只匹配中间节点有关系指向它的地方。
我的 neo4j 图表如下所示..
300 连接到 100 并且 100 连接到 201 和 400.
我想找出 neo4j 中的第二级连接。
例如:300 的第 2 级节点应该 return me 201 和 400
在neo4j中可以吗?
当我使用以下密码查询时:
MATCH (n)-[:CALLED*2]-(result) WHERE n.name = '300' RETURN result
It should give me only 201 and 400 ,but it return like below
这在 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
这里的部分问题是,这将 return 节点 #200。符合您查找结果的一个查询是:
MATCH (n)-[:CALLED]->()<-[:CALLED]-(result)
WHERE n.id = 300
RETURN result
这只匹配中间节点有关系指向它的地方。